117 lines
3.7 KiB
Docker
117 lines
3.7 KiB
Docker
ARG DOCKER_IMAGE=monasca/thresh
|
|
ARG APP_REPO=https://review.opendev.org/openstack/monasca-thresh
|
|
|
|
# Branch, tag or git hash to build from.
|
|
ARG REPO_VERSION=master
|
|
ARG CONSTRAINTS_BRANCH=master
|
|
|
|
FROM storm:1.1.1
|
|
|
|
ENV \
|
|
MAVEN_HOME="/usr/share/maven" \
|
|
ZOOKEEPER_SERVERS="zookeeper" \
|
|
ZOOKEEPER_PORT="2181" \
|
|
ZOOKEEPER_WAIT="true" \
|
|
SUPERVISOR_SLOTS_PORTS="6701,6702" \
|
|
SUPERVISOR_MAX_MB="256" \
|
|
WORKER_MAX_MB="784" \
|
|
NIMBUS_SEEDS="storm-nimbus" \
|
|
NIMBUS_MAX_MB="256" \
|
|
UI_MAX_MB="768" \
|
|
WORKER_LOGS_TO_STDOUT="false" \
|
|
USE_SSL_ENABLED="true"
|
|
|
|
COPY memory.py settings.xml.j2 /
|
|
COPY start.sh mysql_check.py kafka_wait_for_topics.py /
|
|
|
|
COPY templates /templates
|
|
COPY logging /logging
|
|
|
|
ENV \
|
|
KAFKA_URI="kafka:9092" \
|
|
KAFKA_WAIT_FOR_TOPICS=alarm-state-transitions,metrics,events \
|
|
LOGSTASH_FIELDS="service=monasca-thresh" \
|
|
LOG_CONFIG_FILE="/storm/log4j2/cluster.xml" \
|
|
MYSQL_HOST=mysql \
|
|
MYSQL_PORT=3306 \
|
|
MYSQL_USER=thresh \
|
|
MYSQL_PASSWORD=password \
|
|
MYSQL_DB=mon \
|
|
NO_STORM_CLUSTER=false \
|
|
STORM_WAIT_DELAY=5 \
|
|
STORM_WAIT_RETRIES=24 \
|
|
STORM_WAIT_TIMEOUT=20 \
|
|
WORKER_MAX_HEAP_MB=256
|
|
|
|
ARG SKIP_COMMON_TESTS=false
|
|
ARG SKIP_THRESH_TESTS=false
|
|
|
|
ARG CREATION_TIME
|
|
ARG DOCKER_IMAGE
|
|
ARG APP_REPO
|
|
ARG GITHUB_REPO
|
|
ARG REPO_VERSION
|
|
ARG GIT_COMMIT
|
|
ARG CONSTRAINTS_BRANCH
|
|
ARG CONSTRAINTS_FILE
|
|
ARG EXTRA_DEPS
|
|
ARG COMMON_REPO
|
|
ARG COMMON_VERSION
|
|
ARG COMMON_GIT_COMMIT
|
|
|
|
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
|
|
RUN \
|
|
echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' > /etc/apk/repositories && \
|
|
echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/community' | tee -a /etc/apk/repositories && \
|
|
apk upgrade --purge && \
|
|
apk add --no-cache --virtual build-dep maven git py3-pip python3-dev git openjdk8 make g++ && \
|
|
apk add --no-cache python3 mysql-client && \
|
|
mkdir /root/.m2 && \
|
|
pip3 install --no-cache-dir \
|
|
jinja2 \
|
|
pykafka \
|
|
pymysql \
|
|
Templer==1.1.4 && \
|
|
set -x && mkdir /monasca-common && \
|
|
git -C /monasca-common init && \
|
|
git -C /monasca-common remote add origin "$COMMON_REPO" && \
|
|
echo "Cloning monasca-common in version: $COMMON_VERSION" && \
|
|
git -C /monasca-common fetch origin "$COMMON_VERSION" && \
|
|
git -C /monasca-common reset --hard FETCH_HEAD && \
|
|
cd /monasca-common && \
|
|
mvn --quiet -B clean install $([ "$SKIP_COMMON_TESTS" = "true" ] && echo "-DskipTests") && \
|
|
cd / && \
|
|
mkdir /app && \
|
|
git -C /app init && \
|
|
git -C /app remote add origin "$APP_REPO" && \
|
|
echo "Cloning app in version: $REPO_VERSION" && \
|
|
git -C /app fetch origin "$REPO_VERSION" && \
|
|
git -C /app reset --hard FETCH_HEAD && \
|
|
cd /app/thresh && \
|
|
mvn --quiet -B clean package $([ "$SKIP_THRESH_TESTS" = "true" ] && echo "-DskipTests") && \
|
|
cp /app/thresh/target/*-SNAPSHOT-shaded.jar /monasca-thresh.jar && \
|
|
cd / && \
|
|
# Save info about build to `/VERSIONS` file.
|
|
printf "App: %s\\n" "$DOCKER_IMAGE" >> /VERSIONS && \
|
|
printf "Repository: %s\\n" "$APP_REPO" >> /VERSIONS && \
|
|
printf "Version: %s\\n" "$REPO_VERSION" >> /VERSIONS && \
|
|
printf "Revision: %s\\n" "$GIT_COMMIT" >> /VERSIONS && \
|
|
printf "Build date: %s\\n" "$CREATION_TIME" >> /VERSIONS && \
|
|
printf "Monasca-common version: %s\\n" "$COMMON_VERSION" \
|
|
>> /VERSIONS && \
|
|
printf "Monasca-common revision: %s\\n" \
|
|
"$COMMON_GIT_COMMIT" >> /VERSIONS && \
|
|
printf "Constraints file: %s\\n" \
|
|
"$CONSTRAINTS_FILE"?h="$CONSTRAINTS_BRANCH" >> /VERSIONS && \
|
|
apk del build-dep && \
|
|
rm -rf \
|
|
/app \
|
|
/monasca-common \
|
|
/root/.cache/ \
|
|
/root/.m2/repository \
|
|
/tmp/* \
|
|
/var/cache/apk/* \
|
|
/var/log/*
|
|
|
|
ENTRYPOINT ["/start.sh"]
|