Skip to content

Commit 7b63563

Browse files
committed
initial commit
0 parents  commit 7b63563

File tree

5 files changed

+849
-0
lines changed

5 files changed

+849
-0
lines changed

.dockerignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.git
2+
.travis.yml
3+
LICENSE
4+
README.md
5+
Makefile

Dockerfile

+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
FROM adoptopenjdk/openjdk8:jdk8u282-b08-debian
2+
3+
ARG version=4.8.0
4+
ARG tz=Asia/Shanghai
5+
ENV ROCKETMQ_VERSION=${version} \
6+
DEBIAN_FRONTEND=noninteractive \
7+
TZ=${tz}
8+
9+
RUN set -ex; \
10+
if ! command -v gpg > /dev/null; then \
11+
apt-get update; \
12+
apt-get install -y --no-install-recommends \
13+
gnupg \
14+
dirmngr \
15+
; \
16+
rm -rf /var/lib/apt/lists/*; \
17+
fi
18+
19+
# grab gosu for easy step-down from root
20+
# https://github.com/tianon/gosu/releases
21+
ENV GOSU_VERSION 1.12
22+
RUN set -eux; \
23+
savedAptMark="$(apt-mark showmanual)"; \
24+
apt-get update; \
25+
apt-get install -y --no-install-recommends ca-certificates wget; \
26+
rm -rf /var/lib/apt/lists/*; \
27+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
28+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
29+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
30+
export GNUPGHOME="$(mktemp -d)"; \
31+
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
32+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
33+
gpgconf --kill all; \
34+
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
35+
apt-mark auto '.*' > /dev/null; \
36+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
37+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
38+
chmod +x /usr/local/bin/gosu; \
39+
gosu --version; \
40+
gosu nobody true
41+
42+
43+
ENV ROCKETMQ_HOME=/opt/rocketmq
44+
ENV PATH=$ROCKETMQ_HOME/bin:$PATH
45+
46+
RUN set -eux; \
47+
savedAptMark="$(apt-mark showmanual)"; \
48+
apt-get update; \
49+
apt-get install -y --no-install-recommends ca-certificates wget p7zip-full; \
50+
rm -rf /var/lib/apt/lists/*; \
51+
\
52+
ROCKETMQ_SOURCE_URL="https://archive.apache.org/dist/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip"; \
53+
ROCKETMQ_PATH="/usr/local/src/rocketmq-$ROCKETMQ_VERSION"; \
54+
\
55+
wget --progress dot:giga --output-document "$ROCKETMQ_PATH.zip.asc" "$ROCKETMQ_SOURCE_URL.asc"; \
56+
wget --progress dot:giga --output-document "$ROCKETMQ_PATH.zip" "$ROCKETMQ_SOURCE_URL"; \
57+
wget --progress dot:giga https://www.apache.org/dist/rocketmq/KEYS; \
58+
\
59+
export GNUPGHOME="$(mktemp -d)"; \
60+
gpg --import KEYS; \
61+
#gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$ROCKETMQ_PGP_KEY_ID"; \
62+
gpg --batch --verify "$ROCKETMQ_PATH.zip.asc" "$ROCKETMQ_PATH.zip"; \
63+
gpgconf --kill all; \
64+
rm -rf "$GNUPGHOME"; \
65+
\
66+
mkdir -p "$ROCKETMQ_HOME"; \
67+
7z x $ROCKETMQ_PATH.zip; \
68+
mv rocketmq-all*/* $ROCKETMQ_HOME; \
69+
rmdir rocketmq-all* ; \
70+
apt-mark auto '.*' > /dev/null; \
71+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
72+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
73+
rm -rf KEYS
74+
75+
76+
# make the "en_US.UTF-8" locale so rocketmq will be utf-8 enabled by default
77+
RUN set -eux; \
78+
if [ -f /etc/dpkg/dpkg.cfg.d/docker ]; then \
79+
# if this file exists, we're likely in "debian:xxx-slim", and locales are thus being excluded so we need to remove that exclusion (since we need locales)
80+
grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \
81+
sed -ri '/\/usr\/share\/locale/d' /etc/dpkg/dpkg.cfg.d/docker; \
82+
! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \
83+
fi; \
84+
apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \
85+
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
86+
ENV LANG en_US.utf8
87+
88+
89+
RUN set -eux; \
90+
apt-get update; \
91+
apt-get install -y --no-install-recommends \
92+
# install "nss_wrapper" in case we need to fake "/etc/passwd" and "/etc/group" (especially for OpenShift)
93+
# https://github.com/docker-library/postgres/issues/359
94+
# https://cwrap.org/nss_wrapper.html
95+
libnss-wrapper \
96+
xz-utils \
97+
psmisc procps iproute2 net-tools libfreetype6 fontconfig fonts-dejavu \
98+
; \
99+
rm -rf /var/lib/apt/lists/*
100+
101+
EXPOSE 9876 10909 10911 10912
102+
103+
# Debian uses Bash as the default interactive shell.
104+
# https://wiki.debian.org/Shell
105+
RUN rm -rf /bin/sh && ln -s /bin/bash /bin/sh
106+
107+
108+
109+
COPY docker-entrypoint.sh /usr/local/bin/
110+
RUN ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
111+
112+
113+
114+
STOPSIGNAL SIGINT
115+
116+
117+
# explicitly set user/group IDs
118+
RUN set -eux; \
119+
groupadd -r rocketmq --gid=3000; \
120+
useradd -r -g rocketmq --uid=3000 --shell=/bin/bash rocketmq; \
121+
mkdir -p /home/rocketmq/logs; \
122+
mkdir -p /home/rocketmq/store; \
123+
chown -R rocketmq:rocketmq ${ROCKETMQ_HOME}; \
124+
chown -R rocketmq:rocketmq /home/rocketmq
125+
126+
RUN \
127+
sed -i '/-server -Xms/d' ${ROCKETMQ_HOME}/bin/runserver.sh; \
128+
sed -i "s@\$JAVA \${JAVA_OPT}@exec \$JAVA \${JAVA_OPT}@g" ${ROCKETMQ_HOME}/bin/runserver.sh; \
129+
sed -i '/-server -Xms/d;/-XX:MaxDirectMemorySize=/d' ${ROCKETMQ_HOME}/bin/runbroker.sh; \
130+
sed -i '/^numactl --interleave/,$d' ${ROCKETMQ_HOME}/bin/runbroker.sh; \
131+
sed -i '$aexec \$JAVA \${JAVA_OPT} \$@' ${ROCKETMQ_HOME}/bin/runbroker.sh; \
132+
sed -i "s@sh \${ROCKETMQ_HOME}@exec \${ROCKETMQ_HOME}@g" ${ROCKETMQ_HOME}/bin/mqbroker; \
133+
sed -i "s@sh \${ROCKETMQ_HOME}@exec \${ROCKETMQ_HOME}@g" ${ROCKETMQ_HOME}/bin/mqnamesrv;
134+
135+
136+
WORKDIR ${ROCKETMQ_HOME}/bin
137+
ENTRYPOINT ["/docker-entrypoint.sh"]

0 commit comments

Comments
 (0)