blob: ecd1f517be3d74b181c19562dd5942ea68fc4b79 [file] [log] [blame]
#
# 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.
#
################################################################################
# Build stage 1 `builder`:
# Download and extract RocketMQ
################################################################################
FROM eclipse-temurin:8-jdk-centos7 AS builder
ARG version
RUN set -eux \
&& yum -y update \
&& yum -y install curl gnupg unzip \
&& yum clean all -y
RUN curl -L https://archive.apache.org/dist/rocketmq/${version}/rocketmq-all-${version}-bin-release.zip -o rocketmq.zip \
&& curl -L https://archive.apache.org/dist/rocketmq/${version}/rocketmq-all-${version}-bin-release.zip.asc -o rocketmq.zip.asc \
&& curl -L https://www.apache.org/dist/rocketmq/KEYS -o KEYS \
&& gpg --import KEYS \
&& gpg --batch --verify rocketmq.zip.asc rocketmq.zip
RUN unzip rocketmq.zip \
&& mkdir -p /tmp/rocketmq-${version} \
&& mv rocketmq*/* /tmp/rocketmq-${version}
################################################################################
# Build stage 2:
# Make the actual RocketMQ docker image
################################################################################
FROM eclipse-temurin:8-jdk-centos7
ARG user=rocketmq
ARG group=rocketmq
ARG uid=3000
ARG gid=3000
ARG version
# Rocketmq version
ENV ROCKETMQ_VERSION ${version}
# Rocketmq home
ENV ROCKETMQ_HOME /home/rocketmq/rocketmq-${ROCKETMQ_VERSION}
# expose namesrv port
EXPOSE 9876
# expose broker ports
EXPOSE 10909 10911 10912
# 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 groupadd -g ${gid} ${group} \
&& useradd -l -u ${uid} -g ${gid} -m -s /bin/bash ${user} \
&& yum -y update \
&& yum -y install less openssl which \
&& yum clean all -y && rm -rf /var/cache/yum
# Copy customized scripts
COPY scripts/ ${ROCKETMQ_HOME}/bin/
# Copy RocketMQ artifact from builder
COPY --from=builder --chown=${uid}:${gid} /tmp/rocketmq-${version}/ ${ROCKETMQ_HOME}
# Override customized scripts for namesrv
# Override customized scripts for broker
# Export Java options
# Add ${JAVA_HOME}/lib/ext as java.ext.dirs
RUN mv ${ROCKETMQ_HOME}/bin/runserver-customize.sh ${ROCKETMQ_HOME}/bin/runserver.sh \
&& mv ${ROCKETMQ_HOME}/bin/runbroker-customize.sh ${ROCKETMQ_HOME}/bin/runbroker.sh \
&& chmod -R a+x ${ROCKETMQ_HOME}/bin/ \
&& export JAVA_OPT=" -Duser.home=/opt" \
&& sed -i 's/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/' ${ROCKETMQ_HOME}/bin/tools.sh \
&& chown -R ${uid}:${gid} ${ROCKETMQ_HOME}
USER ${user}
WORKDIR ${ROCKETMQ_HOME}/bin
ENTRYPOINT ["./docker-entrypoint.sh"]
# Dummy overridable parameter parsed by entrypoint
CMD ["dummy"]