2025-01-24 03:26:11 +08:00
ARG OTP_VERSION = "27"
2024-04-03 01:04:38 +08:00
2025-01-24 03:26:11 +08:00
FROM erlang:${OTP_VERSION}-slim AS base
2024-04-20 02:05:24 +08:00
RUN set -eux; \
2025-01-24 03:26:11 +08:00
export DEBIAN_FRONTEND = noninteractive; \
2024-04-20 02:05:24 +08:00
apt-get update; \
2025-01-24 03:26:11 +08:00
apt-get install --yes --no-install-recommends \
2024-04-20 02:05:24 +08:00
ca-certificates \
2025-01-24 03:26:11 +08:00
gosu \
tzdata \
2024-04-20 02:05:24 +08:00
gnupg \
2025-01-24 03:26:11 +08:00
wget \
xz-utils \
2024-04-20 02:05:24 +08:00
; \
2025-01-24 03:26:11 +08:00
rm -rf /var/lib/apt/lists/*; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant= false;
2024-04-20 02:05:24 +08:00
2025-01-24 03:26:11 +08:00
FROM base AS rabbitmq
2024-04-03 01:04:38 +08:00
2025-01-24 03:26:11 +08:00
ENV RABBITMQ_DATA_DIR = /var/lib/rabbitmq
2024-04-03 01:04:38 +08:00
2024-04-20 02:05:24 +08:00
RUN set -eux; \
# Create rabbitmq system user & group, fix permissions & allow root user to connect to the RabbitMQ Erlang VM
2025-01-24 03:26:11 +08:00
groupadd --system rabbitmq; \
2024-04-20 02:05:24 +08:00
useradd --uid 999 --system --home-dir " $RABBITMQ_DATA_DIR " --gid rabbitmq rabbitmq; \
mkdir -p " $RABBITMQ_DATA_DIR " /etc/rabbitmq /etc/rabbitmq/conf.d /tmp/rabbitmq-ssl /var/log/rabbitmq; \
chown -fR rabbitmq:rabbitmq " $RABBITMQ_DATA_DIR " /etc/rabbitmq /etc/rabbitmq/conf.d /tmp/rabbitmq-ssl /var/log/rabbitmq; \
chmod 1777 " $RABBITMQ_DATA_DIR " /etc/rabbitmq /etc/rabbitmq/conf.d /tmp/rabbitmq-ssl /var/log/rabbitmq; \
ln -sf " $RABBITMQ_DATA_DIR /.erlang.cookie " /root/.erlang.cookie
2024-04-03 01:04:38 +08:00
# Use the latest stable RabbitMQ release (https://www.rabbitmq.com/download.html)
ARG RABBITMQ_VERSION = 4 .0.0
ENV RABBITMQ_VERSION = ${ RABBITMQ_VERSION }
2025-01-24 03:26:11 +08:00
ENV RABBITMQ_HOME = /opt/rabbitmq
2024-04-03 01:04:38 +08:00
# Add RabbitMQ to PATH
2025-01-24 03:26:11 +08:00
ENV PATH = $RABBITMQ_HOME /sbin:$PATH
2023-12-01 21:36:15 +08:00
2024-04-03 01:04:38 +08:00
COPY package-generic-unix.tar.xz /usr/local/src/rabbitmq-$RABBITMQ_VERSION .tar.xz
2023-12-01 21:36:15 +08:00
RUN set -eux; \
2024-04-03 01:04:38 +08:00
RABBITMQ_PATH = " /usr/local/src/rabbitmq- $RABBITMQ_VERSION " ; \
mkdir -p " $RABBITMQ_HOME " ; \
tar --extract --file " $RABBITMQ_PATH .tar.xz " --directory " $RABBITMQ_HOME " --strip-components 1; \
rm -rf " $RABBITMQ_PATH " *; \
2023-12-01 21:36:15 +08:00
# Do not default SYS_PREFIX to RABBITMQ_HOME, leave it empty
grep -qE '^SYS_PREFIX=\$\{RABBITMQ_HOME\}$' " $RABBITMQ_HOME /sbin/rabbitmq-defaults " ; \
sed -i 's/^SYS_PREFIX=.*$/SYS_PREFIX=/' " $RABBITMQ_HOME /sbin/rabbitmq-defaults " ; \
grep -qE '^SYS_PREFIX=$' " $RABBITMQ_HOME /sbin/rabbitmq-defaults " ; \
2025-01-24 03:26:11 +08:00
chown -R rabbitmq:rabbitmq " $RABBITMQ_HOME " ;
2023-12-01 21:36:15 +08:00
# set home so that any `--user` knows where to put the erlang cookie
2025-01-24 03:26:11 +08:00
ENV HOME = $RABBITMQ_DATA_DIR
2023-12-01 21:36:15 +08:00
# Hint that the data (a.k.a. home dir) dir should be separate volume
VOLUME $RABBITMQ_DATA_DIR
# warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)
# Setting all environment variables that control language preferences, behaviour differs - https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html#The-LANGUAGE-variable
# https://docs.docker.com/samples/library/ubuntu/#locales
2025-01-24 03:26:11 +08:00
ENV LANG = C.UTF-8
ENV LANGUAGE = C.UTF-8
ENV LC_ALL = C.UTF-8
2023-12-01 21:36:15 +08:00
2024-04-03 01:04:38 +08:00
COPY --chown= rabbitmq:rabbitmq 10-defaults.conf 20-management_agent.disable_metrics_collector.conf /etc/rabbitmq/conf.d/
2023-12-01 21:36:15 +08:00
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT [ "docker-entrypoint.sh" ]
CMD [ "rabbitmq-server" ]