monasca-thresh/docker/Dockerfile
Michał Piotrowski 5cb9f94387 Create Docker image and build in Zuul for Monasca-Thresh
Story: 2001694
Task: 30289

Change-Id: If3323a18ac3697a92ca3f06b0db154517582d7aa
2019-08-29 10:09:14 +02:00

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"]