|
| 1 | +FROM alpine:3.6 |
| 2 | + |
| 3 | +# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added |
| 4 | +RUN addgroup -S rabbitmq && adduser -S -h /var/lib/rabbitmq -G rabbitmq rabbitmq |
| 5 | + |
| 6 | +# grab su-exec for easy step-down from root |
| 7 | +RUN apk add --no-cache 'su-exec>=0.2' |
| 8 | + |
| 9 | +RUN apk add --no-cache \ |
| 10 | +# Bash for docker-entrypoint |
| 11 | + bash \ |
| 12 | +# Procps for rabbitmqctl |
| 13 | + procps \ |
| 14 | +# Erlang for RabbitMQ |
| 15 | + erlang-asn1 \ |
| 16 | + erlang-hipe \ |
| 17 | + erlang-crypto \ |
| 18 | + erlang-eldap \ |
| 19 | + erlang-inets \ |
| 20 | + erlang-mnesia \ |
| 21 | + erlang \ |
| 22 | + erlang-os-mon \ |
| 23 | + erlang-public-key \ |
| 24 | + erlang-sasl \ |
| 25 | + erlang-ssl \ |
| 26 | + erlang-syntax-tools \ |
| 27 | + erlang-xmerl |
| 28 | + |
| 29 | +# get logs to stdout (thanks @dumbbell for pushing this upstream! :D) |
| 30 | +ENV RABBITMQ_LOGS=- RABBITMQ_SASL_LOGS=- |
| 31 | +# https://github.com/rabbitmq/rabbitmq-server/commit/53af45bf9a162dec849407d114041aad3d84feaf |
| 32 | + |
| 33 | +ENV RABBITMQ_HOME /opt/rabbitmq |
| 34 | +ENV PATH $RABBITMQ_HOME/sbin:$PATH |
| 35 | + |
| 36 | +# gpg: key 6026DFCA: public key "RabbitMQ Release Signing Key <[email protected]>" imported |
| 37 | +ENV RABBITMQ_GPG_KEY 0A9AF2115F4687BD29803A206B73A36E6026DFCA |
| 38 | + |
| 39 | +ENV RABBITMQ_VERSION 3.7.0-rc.1 |
| 40 | +ENV RABBITMQ_GITHUB_TAG v3.7.0-rc.1 |
| 41 | + |
| 42 | +RUN set -ex; \ |
| 43 | + \ |
| 44 | + apk add --no-cache --virtual .build-deps \ |
| 45 | + ca-certificates \ |
| 46 | + gnupg \ |
| 47 | + libressl \ |
| 48 | + xz \ |
| 49 | + ; \ |
| 50 | + \ |
| 51 | + wget -O rabbitmq-server.tar.xz.asc "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz.asc"; \ |
| 52 | + wget -O rabbitmq-server.tar.xz "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz"; \ |
| 53 | + \ |
| 54 | + export GNUPGHOME="$(mktemp -d)"; \ |
| 55 | + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$RABBITMQ_GPG_KEY"; \ |
| 56 | + gpg --batch --verify rabbitmq-server.tar.xz.asc rabbitmq-server.tar.xz; \ |
| 57 | + rm -rf "$GNUPGHOME"; \ |
| 58 | + \ |
| 59 | + mkdir -p "$RABBITMQ_HOME"; \ |
| 60 | + tar \ |
| 61 | + --extract \ |
| 62 | + --verbose \ |
| 63 | + --file rabbitmq-server.tar.xz \ |
| 64 | + --directory "$RABBITMQ_HOME" \ |
| 65 | + --strip-components 1 \ |
| 66 | + ; \ |
| 67 | + rm -f rabbitmq-server.tar.xz*; \ |
| 68 | + \ |
| 69 | +# update SYS_PREFIX (first making sure it's set to what we expect it to be) |
| 70 | + grep -qE '^SYS_PREFIX=\$\{RABBITMQ_HOME\}$' "$RABBITMQ_HOME/sbin/rabbitmq-defaults"; \ |
| 71 | + sed -ri 's!^(SYS_PREFIX=).*$!\1!g' "$RABBITMQ_HOME/sbin/rabbitmq-defaults"; \ |
| 72 | + grep -qE '^SYS_PREFIX=$' "$RABBITMQ_HOME/sbin/rabbitmq-defaults"; \ |
| 73 | + \ |
| 74 | + apk del .build-deps |
| 75 | + |
| 76 | +# set home so that any `--user` knows where to put the erlang cookie |
| 77 | +ENV HOME /var/lib/rabbitmq |
| 78 | + |
| 79 | +RUN mkdir -p /var/lib/rabbitmq /etc/rabbitmq \ |
| 80 | + && chown -R rabbitmq:rabbitmq /var/lib/rabbitmq /etc/rabbitmq \ |
| 81 | + && chmod -R 777 /var/lib/rabbitmq /etc/rabbitmq |
| 82 | +VOLUME /var/lib/rabbitmq |
| 83 | + |
| 84 | +# add a symlink to the .erlang.cookie in /root so we can "docker exec rabbitmqctl ..." without gosu |
| 85 | +RUN ln -sf /var/lib/rabbitmq/.erlang.cookie /root/ |
| 86 | + |
| 87 | +RUN ln -sf "$RABBITMQ_HOME/plugins" /plugins |
| 88 | + |
| 89 | +COPY docker-entrypoint.sh /usr/local/bin/ |
| 90 | +ENTRYPOINT ["docker-entrypoint.sh"] |
| 91 | + |
| 92 | +EXPOSE 4369 5671 5672 25672 |
| 93 | +CMD ["rabbitmq-server"] |
0 commit comments