forked from RocketChat/Rocket.Chat
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.medsense-source
More file actions
140 lines (117 loc) · 5.73 KB
/
Dockerfile.medsense-source
File metadata and controls
140 lines (117 loc) · 5.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
FROM node:22.16.0-bullseye AS build
ENV DEBIAN_FRONTEND=noninteractive
RUN echo "[build] apt-get deps (build stage) start" \
&& apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
g++ \
git \
make \
python3 \
&& rm -rf /var/lib/apt/lists/* \
&& echo "[build] apt-get deps (build stage) done"
RUN echo "[build] meteor install start" \
&& curl -fsSL https://install.meteor.com/ | sh \
&& echo "[build] meteor install done"
RUN echo "[build] create app user + corepack start" \
&& useradd --create-home --shell /bin/bash app \
&& corepack enable \
&& corepack prepare yarn@4.11.0 --activate \
&& echo "[build] create app user + corepack done"
WORKDIR /app
COPY --chown=app:app . .
RUN echo "[build] prepare /app/bundle start" \
&& mkdir -p /app/bundle \
&& chown -R app:app /app/bundle \
&& echo "[build] prepare /app/bundle done"
USER app
RUN if [ -d /app/prebuilt/bundle ]; then \
echo "[build] using prebuilt bundle from /app/prebuilt/bundle"; \
mkdir -p /app/bundle; \
cp -a /app/prebuilt/bundle/. /app/bundle/; \
else \
echo "[build] no prebuilt bundle found; running full build"; \
echo "[build] yarn install --immutable start"; \
git config --global --add safe.directory /app; \
yarn install --immutable; \
echo "[build] yarn install --immutable done"; \
echo "[build] ui-kit packages build start"; \
yarn workspace @rocket.chat/ui-kit build; \
yarn workspace @rocket.chat/fuselage-ui-kit build; \
echo "[build] ui-kit packages build done"; \
echo "[build] message-parser package build start"; \
yarn workspace @rocket.chat/message-parser build; \
echo "[build] message-parser package build done"; \
echo "[build] core-typings package build start"; \
yarn workspace @rocket.chat/core-typings build; \
echo "[build] core-typings package build done"; \
echo "[build] rest-typings package build start"; \
yarn workspace @rocket.chat/rest-typings build; \
echo "[build] rest-typings package build done"; \
echo "[build] model-typings package build start"; \
yarn workspace @rocket.chat/model-typings build; \
echo "[build] model-typings package build done"; \
echo "[build] models package build start"; \
yarn workspace @rocket.chat/models build; \
echo "[build] models package build done"; \
echo "[build] meteor build:ci start"; \
cd apps/meteor; \
mkdir -p /tmp/meteor-cache /tmp/meteor-local; \
METEOR_CACHE_DIR=/tmp/meteor-cache METEOR_LOCAL_DIR=/tmp/meteor-local \
METEOR_DISABLE_OPTIMISTIC_CACHING=1 METEOR_DEBUG_BUILD=1 yarn build:ci; \
rm -rf /app/bundle/*; \
cp -a /tmp/dist/bundle/. /app/bundle/; \
echo "[build] meteor build:ci done"; \
fi
FROM node:22.16.0-bullseye
ENV NODE_ENV=production \
DENO_VERSION=1.44.0 \
DENO_DIR=/app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/.deno-cache \
NODE_PATH=/app/bundle/programs/server/npm/node_modules \
HOME=/tmp
WORKDIR /app/bundle
RUN echo "[build] apt-get deps (runtime stage) start" \
&& apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
g++ \
make \
python3 \
unzip \
&& curl -fsSL https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-x86_64-unknown-linux-gnu.zip -o /tmp/deno.zip \
&& unzip -q /tmp/deno.zip -d /usr/local/bin \
&& chmod +x /usr/local/bin/deno \
&& rm -f /tmp/deno.zip \
&& rm -rf /var/lib/apt/lists/* \
&& echo "[build] apt-get deps (runtime stage) done"
RUN echo "[build] create rocketchat user start" \
&& groupadd -g 1001 rocketchat \
&& useradd -m -u 1001 -g 1001 -s /bin/bash rocketchat \
&& mkdir -p /app/uploads \
&& chown -R rocketchat:rocketchat /app /app/uploads /tmp \
&& echo "[build] create rocketchat user done"
COPY --from=build --chown=1001:1001 /app/bundle /app/bundle
USER rocketchat
RUN echo "[build] npm install --omit=dev start" \
&& cd programs/server && npm install --omit=dev \
&& echo "[build] npm install --omit=dev done"
RUN echo "[build] link abac for meteor packages start" \
&& if [ -d /app/bundle/programs/server/npm/node_modules/meteor ]; then \
for d in /app/bundle/programs/server/npm/node_modules/meteor/*/node_modules; do \
[ -d "$d" ] || continue; \
mkdir -p "$d/@rocket.chat"; \
ln -sf /app/bundle/programs/server/npm/node_modules/@rocket.chat/abac "$d/@rocket.chat/abac"; \
done; \
fi \
&& echo "[build] link abac for meteor packages done"
RUN echo "[build] patch apps-engine deno flags start" \
&& sed -i "s/--unstable-detect-cjs/--cached-only/" /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/server/runtime/deno/AppsEngineDenoRuntime.js \
&& sed -i "s/--unstable-detect-cjs/--cached-only/" /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/src/server/runtime/deno/AppsEngineDenoRuntime.ts \
&& sed -i "s/--cached-only/--cached-only','--no-lock/" /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/server/runtime/deno/AppsEngineDenoRuntime.js \
&& sed -i "s/--cached-only/--cached-only','--no-lock/" /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/src/server/runtime/deno/AppsEngineDenoRuntime.ts \
&& rm -f /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/deno.lock \
&& echo "[build] patch apps-engine deno flags done"
RUN echo "[build] deno cache start" \
&& deno cache --no-lock --config /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/deno.jsonc /app/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/deno-runtime/main.ts \
&& echo "[build] deno cache done"
CMD ["node","main.js"]