# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # FROM openjdk:8-alpine RUN apk add --no-cache bash gettext nmap-ncat openssl busybox-extras ARG user=rocketmq ARG group=rocketmq ARG uid=3000 ARG gid=3000 # RocketMQ is run with user `rocketmq`, uid = 3000 # If you bind mount a volume from the host or a data container, # ensure you use the same uid RUN addgroup --gid ${gid} ${group} \ && adduser --uid ${uid} -G ${group} ${user} -s /bin/bash -D ARG version # Rocketmq version ENV ROCKETMQ_VERSION ${version} # Rocketmq home ENV ROCKETMQ_HOME /home/rocketmq/rocketmq-${ROCKETMQ_VERSION} WORKDIR ${ROCKETMQ_HOME} # Install RUN set -eux; \ apk add --virtual .build-deps curl gnupg unzip; \ curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip -o rocketmq.zip; \ curl -L https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip.asc -o rocketmq.zip.asc; \ #https://www.apache.org/dist/rocketmq/KEYS curl -L https://www.apache.org/dist/rocketmq/KEYS -o KEYS; \ \ gpg --import KEYS; \ gpg --batch --verify rocketmq.zip.asc rocketmq.zip; \ unzip rocketmq.zip; \ mv rocketmq-all*/* . ; \ rmdir rocketmq-all* ; \ rm rocketmq.zip rocketmq.zip.asc KEYS; \ apk del .build-deps ; \ rm -rf /var/cache/apk/* ; \ rm -rf /tmp/* # Copy customized scripts COPY scripts/ ${ROCKETMQ_HOME}/bin/ RUN chown -R ${uid}:${gid} ${ROCKETMQ_HOME} # Expose namesrv port EXPOSE 9876 # Override customized scripts for namesrv RUN mv ${ROCKETMQ_HOME}/bin/runserver-customize.sh ${ROCKETMQ_HOME}/bin/runserver.sh \ && chmod a+x ${ROCKETMQ_HOME}/bin/runserver.sh \ && chmod a+x ${ROCKETMQ_HOME}/bin/mqnamesrv # Expose broker ports EXPOSE 10909 10911 10912 # Override customized scripts for broker RUN mv ${ROCKETMQ_HOME}/bin/runbroker-customize.sh ${ROCKETMQ_HOME}/bin/runbroker.sh \ && chmod a+x ${ROCKETMQ_HOME}/bin/runbroker.sh \ && chmod a+x ${ROCKETMQ_HOME}/bin/mqbroker # Export Java options RUN export JAVA_OPT=" -Duser.home=/opt" # Add ${JAVA_HOME}/lib/ext as java.ext.dirs RUN sed -i 's/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/' ${ROCKETMQ_HOME}/bin/tools.sh USER ${user} WORKDIR ${ROCKETMQ_HOME}/bin