summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerhard Lazu <gerhard@lazu.co.uk>2021-07-05 17:18:44 +0100
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2021-07-22 11:21:11 +0200
commit2793d59ab885d10c68ba0171cd4b6be6842dd35e (patch)
tree7ae802bfc5ca675363557e749d5f2a93332b7789
parent0bb37507d0e1fea1426ce30bbad76f15452f8320 (diff)
downloadrabbitmq-server-git-2793d59ab885d10c68ba0171cd4b6be6842dd35e.tar.gz
Create container image for RabbitMQ erlang release
Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
-rw-r--r--Dockerfile71
-rw-r--r--erlang-release.mk17
2 files changed, 88 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000..0762396d45
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,71 @@
+FROM debian:10
+
+ARG FAIL_FAST_VERBOSE="set -ex"
+ENV DEBIAN_FRONTEND=noninteractive
+ARG PKG_INSTALL="apt-get install --yes"
+
+# Use the terminal with 256 colors support
+ENV TERM=xterm-256color
+
+RUN echo "Pre-warm package manager cache..." \
+ ; ${FAIL_FAST_VERBOSE} \
+ ; apt-get update
+
+RUN echo "Install openssl..." \
+ ; ${FAIL_FAST_VERBOSE} \
+ ; ${PKG_INSTALL} openssl \
+ ; openssl version
+
+ARG RABBITMQ_INSTALL_DIR=/opt/rabbitmq
+RUN mkdir -p ${RABBITMQ_INSTALL_DIR}/log
+ARG RABBITMQ_VERSION
+ADD _rel/RabbitMQ/RabbitMQ-${RABBITMQ_VERSION}.tar.gz ${RABBITMQ_INSTALL_DIR}
+WORKDIR ${RABBITMQ_INSTALL_DIR}
+
+ENV PATH=${RABBITMQ_INSTALL_DIR}/bin:$PATH
+
+ARG RABBITMQ_DATA_DIR=${RABBITMQ_INSTALL_DIR}/var/lib/rabbitmq
+ARG RABBITMQ_CONF_DIR=${RABBITMQ_INSTALL_DIR}/etc/rabbitmq
+ARG RABBITMQ_LOG_DIR=${RABBITMQ_INSTALL_DIR}/var/log/rabbitmq
+
+# Hint that this should be a volume
+VOLUME ${RABBITMQ_DATA_DIR}
+
+RUN echo "Configure rabbitmq system user & group..." \
+ ; ${FAIL_FAST_VERBOSE} \
+ ; groupadd --gid 999 --system rabbitmq \
+ ; useradd --uid 999 --system --home-dir ${RABBITMQ_DATA_DIR} --gid rabbitmq rabbitmq \
+ ; id rabbitmq \
+ ; mkdir -p ${RABBITMQ_DATA_DIR} ${RABBITMQ_CONF_DIR} ${RABBITMQ_LOG_DIR} \
+ ; chown -fR rabbitmq:rabbitmq ${RABBITMQ_DATA_DIR} ${RABBITMQ_CONF_DIR} ${RABBITMQ_LOG_DIR} ${RABBITMQ_INSTALL_DIR}/log \
+ ; chmod 770 ${RABBITMQ_DATA_DIR} ${RABBITMQ_CONF_DIR} ${RABBITMQ_LOG_DIR} ${RABBITMQ_INSTALL_DIR}/log
+
+# Configure locale
+ARG LOCALE=C.UTF-8
+ENV LC_ALL=${LOCALE} LC_CTYPE=${LOCALE} LANG=${LOCALE} LANGUAGE=${LOCALE}
+
+# Write logs to STDOUT, default for containers
+ENV RABBITMQ_LOGS=-
+
+CMD ["RabbitMQ", "console"]
+# https://www.rabbitmq.com/networking.html
+EXPOSE 1883 4369 5671 5672 8883 15674 15675 25672 61613 61614
+
+# Last command as root...
+RUN echo "Install *lightweight* utilities for system monitoring..." \
+ ; ${FAIL_FAST_VERBOSE} \
+ ; ${PKG_INSTALL} atop htop nmon sysstat iperf3 fping \
+ ; echo "Cleanup apt package lists..." \
+ ; rm -fr /var/lib/apt/lists/*
+
+# Run all following commands as the rabbitmq user
+USER rabbitmq
+
+RUN echo "Enable plugins..." \
+ ; echo "[rabbitmq_prometheus, rabbitmq_management]." > ${RABBITMQ_CONF_DIR}/enabled_plugins
+EXPOSE 15691 15692
+EXPOSE 15671 15672
+
+RUN echo "Remove Erlang cookie so that we start with a clean slate..." \
+ ; ${FAIL_FAST_VERBOSE} \
+ ; rm -f ${RABBITMQ_DATA_DIR}/.erlang.cookie
diff --git a/erlang-release.mk b/erlang-release.mk
new file mode 100644
index 0000000000..bb54260623
--- /dev/null
+++ b/erlang-release.mk
@@ -0,0 +1,17 @@
+PROJECT_VERSION ?= 3.10.0
+
+_rel/RabbitMQ/RabbitMQ-$(PROJECT_VERSION).tar.gz:
+ docker run --interactive --tty --rm \
+ --volume $(CURDIR):/workspace \
+ --workdir /workspace \
+ pivotalrabbitmq/rabbitmq-server-buildenv:linux-erlang-24.0-elixir-latest \
+ make PROJECT_VERSION=$(PROJECT_VERSION)
+.PHONY: release
+release: _rel/RabbitMQ/RabbitMQ-$(PROJECT_VERSION).tar.gz
+
+.PHONY: container-image
+container-image:
+ docker build --progress plain \
+ --build-arg RABBITMQ_VERSION=$(PROJECT_VERSION) \
+ --tag pivotalrabbitmq/rabbitmq:erlang-release-$(PROJECT_VERSION) \
+ .