Skip to content

Commit 66909c5

Browse files
authored
Merge pull request ppc64le#1000 from ManirajDeivendran/mongodb_4_4
MongoDB Dockerfile for ppc64le
2 parents 286b163 + e69b325 commit 66909c5

File tree

3 files changed

+529
-0
lines changed

3 files changed

+529
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Origin: https://github.com/CrimsonGlory/mongo_ppc64le/blob/master/Dockerfile
2+
#
3+
FROM ppc64le/ubuntu:20.04
4+
5+
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
6+
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
7+
8+
RUN set -eux; \
9+
apt-get update; \
10+
apt-get install -y --no-install-recommends \
11+
ca-certificates \
12+
jq \
13+
numactl \
14+
; \
15+
if ! command -v ps > /dev/null; then \
16+
apt-get install -y --no-install-recommends procps; \
17+
fi; \
18+
rm -rf /var/lib/apt/lists/*
19+
20+
# grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases)
21+
ENV GOSU_VERSION 1.12
22+
# grab "js-yaml" for parsing mongod's YAML config files (https://github.com/nodeca/js-yaml/releases)
23+
ENV JSYAML_VERSION 3.13.1
24+
25+
RUN set -ex; \
26+
\
27+
savedAptMark="$(apt-mark showmanual)"; \
28+
apt-get update; \
29+
apt-get install -y --no-install-recommends \
30+
wget \
31+
; \
32+
if ! command -v gpg > /dev/null; then \
33+
apt-get install -y --no-install-recommends gnupg dirmngr; \
34+
savedAptMark="$savedAptMark gnupg dirmngr"; \
35+
elif gpg --version | grep -q '^gpg (GnuPG) 1\.'; then \
36+
# "This package provides support for HKPS keyservers." (GnuPG 1.x only)
37+
apt-get install -y --no-install-recommends gnupg-curl; \
38+
fi; \
39+
rm -rf /var/lib/apt/lists/*; \
40+
\
41+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
42+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
43+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
44+
export GNUPGHOME="$(mktemp -d)"; \
45+
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
46+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
47+
command -v gpgconf && gpgconf --kill all || :; \
48+
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
49+
\
50+
wget -O /js-yaml.js "https://github.com/nodeca/js-yaml/raw/${JSYAML_VERSION}/dist/js-yaml.js"; \
51+
# TODO some sort of download verification here
52+
\
53+
apt-mark auto '.*' > /dev/null; \
54+
apt-mark manual $savedAptMark > /dev/null; \
55+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
56+
\
57+
# smoke test
58+
chmod +x /usr/local/bin/gosu; \
59+
gosu --version; \
60+
gosu nobody true
61+
62+
RUN mkdir /docker-entrypoint-initdb.d
63+
64+
RUN set -ex; \
65+
export GNUPGHOME="$(mktemp -d)"; \
66+
set -- '20691EEC35216C63CAF66CE1656408E390CFB1F5'; \
67+
for key; do \
68+
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key"; \
69+
done; \
70+
gpg --batch --export "$@" > /etc/apt/trusted.gpg.d/mongodb.gpg; \
71+
command -v gpgconf && gpgconf --kill all || :; \
72+
rm -r "$GNUPGHOME"; \
73+
apt-key list
74+
75+
ENV MONGO_MAJOR 4.4
76+
ENV MONGO_VERSION 4.4.6
77+
78+
ENV SCONS_MAJOR 3.1
79+
ENV SCONS_VERSION 3.1.2
80+
81+
# We install the necesary tools to compile mongo on ppc64le
82+
RUN apt-get update \
83+
&& apt-get upgrade -y \
84+
&& apt-get install -y --no-install-recommends \
85+
unzip \
86+
git \
87+
build-essential \
88+
wget \
89+
ca-certificates \
90+
libcurl4-openssl-dev \
91+
libssl-dev python3-dev python3-pip \
92+
# && apt-get install -y python3-pip \
93+
&& rm -rf /var/lib/apt/lists/* \
94+
&& wget https://downloads.sourceforge.net/project/scons/scons/${SCONS_VERSION}/scons-${SCONS_VERSION}.zip -O /tmp/scons.zip \
95+
&& unzip /tmp/scons.zip -d /tmp/ \
96+
&& python3 /tmp/scons-${SCONS_VERSION}/setup.py install \
97+
&& mkdir -p /tmp/mongodb-src-r${MONGO_VERSION} \
98+
&& cd /tmp/mongodb-src-r${MONGO_VERSION} \
99+
&& git clone https://github.com/mongodb/mongo.git && cd mongo \
100+
&& git checkout r${MONGO_VERSION} \
101+
&& python3 -m pip install -r etc/pip/compile-requirements.txt \
102+
&& python3 buildscripts/scons.py install-mongod install-mongo --disable-warnings-as-errors DESTDIR=/usr/ --ssl=on --no-cache --release \
103+
&& apt-get purge -y --auto-remove \
104+
ca-certificates \
105+
wget \
106+
unzip \
107+
git \
108+
build-essential \
109+
python3 \
110+
python3-pip python3-setuptools \
111+
libssl-dev \
112+
&& apt-get clean \
113+
&& rm -rf /var/lib/apt/lists/* \
114+
&& rm -rf /tmp/mongodb-src-r${MONGO_VERSION} \
115+
&& rm -rf /tmp/scons-${SCONS_VERSION}/ \
116+
&& rm -f /tmp/mongodb.zip \
117+
&& rm -f /tmp/scons.zip
118+
# ToDo: uninstall scons
119+
120+
121+
RUN mkdir -p /data/db /data/configdb \
122+
&& chown -R mongodb:mongodb /data/db /data/configdb
123+
VOLUME /data/db /data/configdb
124+
125+
COPY docker-entrypoint.sh /usr/local/bin/
126+
127+
# backwards compat
128+
RUN ln -s /usr/local/bin/docker-entrypoint.sh /entrypoint.sh \
129+
&& chmod +x /usr/local/bin/docker-entrypoint.sh \
130+
&& chmod +x /entrypoint.sh
131+
ENTRYPOINT ["docker-entrypoint.sh"]
132+
133+
EXPOSE 27017
134+
135+
USER mongodb
136+
137+
CMD ["mongod"]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# mongo_ppc64le
2+
Dockerfile for MongoDB 4.4 on ppc64le
3+
4+
Build command to create docker image:
5+
6+
docker build -t mongo-ppc64le:4.4 .

0 commit comments

Comments
 (0)