monasca-thresh/docker/Dockerfile
Hoai-Thu Vuong 2d6a94c8e8 Fix deprecated zuul queue syntax
Zuul deprecated (and now removed) declaring shared queues at a pipeline
level [1]. This patch fixes the syntax to make the gate work again for
monasca-common.

[1] https://lists.openstack.org/pipermail/openstack-discuss/2022-May/028603.html
[2] https://review.opendev.org/c/openstack/monasca-common/+/874297

Change-Id: I0e591770e30c321bcc340b9dd13303259462f30a
2024-07-04 12:50:06 +07:00

127 lines
4.4 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.2.3
ENV \
MAVEN_HOME="/usr/share/maven" \
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" \
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/bash", "-eo", "pipefail", "-c"]
RUN \
mkdir -p /usr/share/man/man1 && \
apt-get clean && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iproute2 net-tools netcat unzip software-properties-common && \
apt-add-repository -y 'deb http://ftp.de.debian.org/debian sid main' && \
apt-add-repository -y 'deb http://archive.debian.org/debian-security stretch/updates main' && \
DEBIAN_FRONTEND=noninteractive apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y -o APT::Immediate-Configure=0 --no-install-recommends openjdk-8-jdk && \
DEBIAN_FRONTEND=noninteractive apt-get install -y -o APT::Immediate-Configure=0 --no-install-recommends maven git python3-pip && \
DEBIAN_FRONTEND=noninteractive apt-get install -y -o APT::Immediate-Configure=0 --no-install-recommends python3 default-mysql-client && \
mkdir /root/.m2 && \
pip3 install --no-cache-dir --upgrade setuptools && \
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 && \
apt-get remove -y apt-utils && \
apt-get remove -y maven git python3-pip software-properties-common && \
apt-get -y autoremove && \
rm -rf \
/app \
/monasca-common \
/root/.cache/ \
/root/.m2/repository \
/tmp/* \
/var/cache/apt/* \
/var/log/*
ENTRYPOINT ["/start.sh"]