anuj commited on
Commit
f8454ad
·
1 Parent(s): e0c555a
Files changed (2) hide show
  1. Dockerfile +42 -106
  2. start.sh +5 -8
Dockerfile CHANGED
@@ -1,118 +1,54 @@
1
- FROM debian:bullseye-slim
2
 
3
- ## Installing Node.js
4
- ENV NODE_ENV production
5
- ENV NODE_VERSION 14.21.3
 
 
 
6
 
7
- # Node installation based on https://github.com/nodejs/docker-node/blob/66b46292a6e5dd5856b1d5204dc51547c80eb17a/12/buster-slim/Dockerfile
8
- RUN ARCH="x64" \
9
- && set -eux \
10
- && apt-get update && apt-get install -y --no-install-recommends ca-certificates curl wget gnupg dirmngr xz-utils \
11
- && rm -rf /var/lib/apt/lists/* \
12
- && for key in \
13
- 4ED778F539E3634C779C87C6D7062848A1AB005C \
14
- 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
15
- 74F12602B6F1C4E913FAA37AD3A89613643B6201 \
16
- 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
17
- 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
18
- C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
19
- C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
20
- DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
21
- A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
22
- 108F52B48DB57BB0CC439B2997B01419BD92F80A \
23
- B9E2F5981AA6E0CD28160D9FF13993A75599653C \
24
- ; do \
25
- gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" || \
26
- gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
27
- gpg --batch --keyserver hkps://pgp.mit.edu --recv-keys "$key" || \
28
- gpg --batch --keyserver hkps://keyserver.pgp.com --recv-keys "$key" ; \
29
- done \
30
- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
31
- && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
32
- && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
33
- && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
34
- && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
35
- && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
36
- && apt-mark auto '.*' > /dev/null \
37
- && find /usr/local -type f -executable -exec ldd '{}' ';' \
38
- | awk '/=>/ { print $(NF-1) }' \
39
- | sort -u \
40
- | xargs -r dpkg-query --search \
41
- | cut -d: -f1 \
42
- | sort -u \
43
- | xargs -r apt-mark manual \
44
- && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
45
-
46
- RUN groupadd -r rocketchat \
47
- && useradd -r -g rocketchat rocketchat \
48
- && mkdir -p /app/uploads \
49
- && chown rocketchat:rocketchat /app/uploads
50
-
51
- VOLUME /app/uploads
52
-
53
- ENV RC_VERSION 6.11.1
54
-
55
- WORKDIR /app
56
-
57
- RUN set -eux \
58
- && apt-get update \
59
- && apt-get install -y --no-install-recommends fontconfig \
60
- && aptMark="$(apt-mark showmanual)" \
61
- && apt-get install -y --no-install-recommends g++ make python3 ca-certificates curl gnupg \
62
- && rm -rf /var/lib/apt/lists/* \
63
- # gpg: key 4FD08104: public key "Rocket.Chat Buildmaster <[email protected]>" imported
64
- && gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 0E163286C20D07B9787EBE9FD7F9D0414FD08104 \
65
- && curl -fSL "https://releases.rocket.chat/${RC_VERSION}/download" -o rocket.chat.tgz \
66
- && curl -fSL "https://releases.rocket.chat/${RC_VERSION}/asc" -o rocket.chat.tgz.asc \
67
- && gpg --batch --verify rocket.chat.tgz.asc rocket.chat.tgz \
68
- && tar zxf rocket.chat.tgz \
69
- && rm rocket.chat.tgz rocket.chat.tgz.asc \
70
- && cd bundle/programs/server \
71
- && npm install --unsafe-perm=true \
72
- && apt-mark auto '.*' > /dev/null \
73
- && apt-mark manual $aptMark > /dev/null \
74
- && find /usr/local -type f -executable -exec ldd '{}' ';' \
75
- | awk '/=>/ { print $(NF-1) }' \
76
- | sort -u \
77
- | xargs -r dpkg-query --search \
78
- | cut -d: -f1 \
79
- | sort -u \
80
- | xargs -r apt-mark manual \
81
- && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
82
- && npm cache clear --force \
83
- && chown -R rocketchat:rocketchat /app
84
-
85
- # Temporarily switch back to root for MongoDB installation
86
- USER root
87
 
88
  # Install MongoDB
89
- RUN apt-get update && apt-get install -y gnupg curl \
90
- && curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
91
- gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
92
- --dearmor \
93
  && echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/8.0 main" | \
94
- tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
95
  && apt-get update \
96
- && apt-get install -y mongodb-org \
97
- && mkdir -p /data/db \
98
- && chown -R rocketchat:rocketchat /data/db
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
- # Create MongoDB startup script
101
- COPY start-mongodb.sh /usr/local/bin/
102
- RUN chmod +x /usr/local/bin/start-mongodb.sh
 
 
103
 
104
- USER root
 
105
 
106
- WORKDIR /app/bundle
 
 
107
 
108
- # needs a mongoinstance - defaults to container linking with alias 'db'
109
- ENV DEPLOY_METHOD=docker-official \
110
- MONGO_URL=mongodb://localhost:27017/meteor \
111
- HOME=/tmp \
112
- PORT=7860 \
113
- ROOT_URL=http://localhost:7860 \
114
- Accounts_AvatarStorePath=/app/uploads
115
 
116
- EXPOSE 7860
117
 
118
- CMD ["/bin/bash", "/usr/local/bin/start-mongodb.sh"]
 
1
+ FROM ubuntu:latest
2
 
3
+ # Install essential packages
4
+ RUN apt-get update && apt-get install -y \
5
+ curl \
6
+ gnupg \
7
+ build-essential \
8
+ graphicsmagick
9
 
10
+ # Install Node.js
11
+ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
12
+ apt-get install -y nodejs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
  # Install MongoDB
15
+ RUN curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
16
+ gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
17
+ --dearmor \
 
18
  && echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/8.0 main" | \
19
+ tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
20
  && apt-get update \
21
+ && apt-get install -y mongodb-org
22
+
23
+ # Create required directories
24
+ RUN mkdir -p /data/db /opt/Rocket.Chat
25
+
26
+ # Create rocketchat user
27
+ RUN useradd -M rocketchat && \
28
+ usermod -L rocketchat
29
+
30
+ # Download and install Rocket.Chat
31
+ RUN curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz && \
32
+ tar -xzf /tmp/rocket.chat.tgz -C /opt/Rocket.Chat --strip-components=1 && \
33
+ cd /opt/Rocket.Chat/programs/server && \
34
+ npm install --production && \
35
+ chown -R rocketchat:rocketchat /opt/Rocket.Chat
36
 
37
+ # Set environment variables
38
+ ENV ROOT_URL=http://localhost:3000 \
39
+ PORT=3000 \
40
+ MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 \
41
+ MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
42
 
43
+ # Expose necessary ports
44
+ EXPOSE 27017 3000
45
 
46
+ # Copy startup script
47
+ COPY start.sh /start.sh
48
+ RUN chmod +x /start.sh
49
 
50
+ # Switch to non-root user
51
+ USER rocketchat
 
 
 
 
 
52
 
53
+ ENTRYPOINT ["/start.sh"]
54
 
 
start.sh CHANGED
@@ -1,14 +1,11 @@
1
  #!/bin/bash
2
 
3
- # Start MongoDB as mongodb user
4
- gosu mongodb mongod --replSet rs0 --bind_ip_all --dbpath /data/db &
5
-
6
- # Wait for MongoDB to start
7
- sleep 10
8
 
9
  # Initialize replica set
10
- gosu mongodb mongosh --eval "rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'localhost:27017'}]})"
11
 
12
  # Start Rocket.Chat
13
- cd /app/bundle
14
- exec gosu rocketchat node main.js
 
1
  #!/bin/bash
2
 
3
+ # Start MongoDB
4
+ mongod --fork --logpath /var/log/mongodb.log --replSet rs01
 
 
 
5
 
6
  # Initialize replica set
7
+ mongo --eval "printjson(rs.initiate())"
8
 
9
  # Start Rocket.Chat
10
+ cd /opt/Rocket.Chat
11
+ node main.js