This is an automated email from the ASF dual-hosted git repository.
jinrongtong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-docker.git
The following commit(s) were added to refs/heads/master by this push:
new dee4ca3 [ISSUE #79]add entry point for docker (CentOS) (#80)
dee4ca3 is described below
commit dee4ca337802c381973551beb40adc6ab9412c6a
Author: caigy <[email protected]>
AuthorDate: Fri Jun 30 16:15:22 2023 +0800
[ISSUE #79]add entry point for docker (CentOS) (#80)
---
image-build/Dockerfile-centos | 100 +++++++++++++++++++++++-------------------
1 file changed, 55 insertions(+), 45 deletions(-)
diff --git a/image-build/Dockerfile-centos b/image-build/Dockerfile-centos
index 3f72e8d..0f78203 100644
--- a/image-build/Dockerfile-centos
+++ b/image-build/Dockerfile-centos
@@ -15,27 +15,40 @@
# limitations under the License.
#
-FROM centos:7
+################################################################################
+# Build stage 1 `builder`:
+# Download and extract RocketMQ
+################################################################################
+FROM eclipse-temurin:8-jdk-centos7 AS builder
-RUN yum install -y java-1.8.0-openjdk-devel.x86_64 unzip gettext nmap-ncat
openssl, which gnupg, telnet \
- && yum clean all -y
+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}
-# FROM openjdk:8-jdk
-# RUN apt-get update && apt-get install -y --no-install-recommends \
-# bash libapr1 unzip telnet wget gnupg ca-certificates \
-# && rm -rf /var/lib/apt/lists/*
+################################################################################
+# 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
-# 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 -u ${uid} -g ${gid} -m -s /bin/bash ${user}
-
ARG version
# Rocketmq version
@@ -44,48 +57,45 @@ ENV ROCKETMQ_VERSION ${version}
# Rocketmq home
ENV ROCKETMQ_HOME /home/rocketmq/rocketmq-${ROCKETMQ_VERSION}
-WORKDIR ${ROCKETMQ_HOME}
-
-RUN set -eux; \
- 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*/* . ; \
- rmdir rocketmq-* ; \
- rm rocketmq.zip rocketmq.zip.asc KEYS
-
-# add scripts
-COPY scripts/ ${ROCKETMQ_HOME}/bin/
-
-RUN chown -R ${uid}:${gid} ${ROCKETMQ_HOME}
-
# expose namesrv port
EXPOSE 9876
-# add 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
-# add 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
+# 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 \
+ && yum clean all -y && rm -rf /var/cache/yum
+
-# export Java options
-RUN export JAVA_OPT=" -Duser.home=/opt"
+# 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 sed -i
's/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/'
${ROCKETMQ_HOME}/bin/tools.sh
+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"]