70 lines
2.9 KiB
Docker
70 lines
2.9 KiB
Docker
ARG OTP_VERSION="27"
|
|
|
|
FROM erlang:${OTP_VERSION}-slim AS base
|
|
|
|
RUN set -eux; \
|
|
export DEBIAN_FRONTEND=noninteractive; \
|
|
apt-get update; \
|
|
apt-get install --yes --no-install-recommends \
|
|
ca-certificates \
|
|
gosu \
|
|
tzdata \
|
|
gnupg \
|
|
wget \
|
|
xz-utils \
|
|
; \
|
|
rm -rf /var/lib/apt/lists/*; \
|
|
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false;
|
|
|
|
FROM base AS rabbitmq
|
|
|
|
ENV RABBITMQ_DATA_DIR=/var/lib/rabbitmq
|
|
|
|
RUN set -eux; \
|
|
# Create rabbitmq system user & group, fix permissions & allow root user to connect to the RabbitMQ Erlang VM
|
|
groupadd --system rabbitmq; \
|
|
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
|
|
|
|
# Use the latest stable RabbitMQ release (https://www.rabbitmq.com/download.html)
|
|
ARG RABBITMQ_VERSION=4.0.0
|
|
ENV RABBITMQ_VERSION=${RABBITMQ_VERSION}
|
|
ENV RABBITMQ_HOME=/opt/rabbitmq
|
|
|
|
# Add RabbitMQ to PATH
|
|
ENV PATH=$RABBITMQ_HOME/sbin:$PATH
|
|
|
|
COPY package-generic-unix.tar.xz /usr/local/src/rabbitmq-$RABBITMQ_VERSION.tar.xz
|
|
|
|
RUN set -eux; \
|
|
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"*; \
|
|
# 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"; \
|
|
chown -R rabbitmq:rabbitmq "$RABBITMQ_HOME";
|
|
|
|
# set home so that any `--user` knows where to put the erlang cookie
|
|
ENV HOME=$RABBITMQ_DATA_DIR
|
|
# 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
|
|
ENV LANG=C.UTF-8
|
|
ENV LANGUAGE=C.UTF-8
|
|
ENV LC_ALL=C.UTF-8
|
|
|
|
COPY --chown=rabbitmq:rabbitmq 10-defaults.conf 20-management_agent.disable_metrics_collector.conf /etc/rabbitmq/conf.d/
|
|
COPY docker-entrypoint.sh /usr/local/bin/
|
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
|
|
|
CMD ["rabbitmq-server"]
|