diff options
author | Gerhard Lazu <gerhard@lazu.co.uk> | 2021-07-05 17:18:44 +0100 |
---|---|---|
committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2021-07-22 11:21:11 +0200 |
commit | 2793d59ab885d10c68ba0171cd4b6be6842dd35e (patch) | |
tree | 7ae802bfc5ca675363557e749d5f2a93332b7789 | |
parent | 0bb37507d0e1fea1426ce30bbad76f15452f8320 (diff) | |
download | rabbitmq-server-git-2793d59ab885d10c68ba0171cd4b6be6842dd35e.tar.gz |
Create container image for RabbitMQ erlang release
Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
-rw-r--r-- | Dockerfile | 71 | ||||
-rw-r--r-- | erlang-release.mk | 17 |
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) \ + . |