@@ -9,7 +9,7 @@ FROM ${ARG_IMAGE_FROM} AS nodeapp-base
99WORKDIR /home/node/app
1010
1111# -----------------------------------------------------------------------------
12- # Stage 2: Nodeapp base
12+ # Stage 2: Nodeapp build
1313# -----------------------------------------------------------------------------
1414FROM nodeapp-base AS nodeapp-build
1515
@@ -23,7 +23,42 @@ RUN --mount=type=cache,target=/home/node/.npm,sharing=locked \
2323 npm prune --omit=dev
2424
2525# -----------------------------------------------------------------------------
26- # TARGET 1: Nodeapp image
26+ # TARGET 1: Nodeapp dev image
27+ # -----------------------------------------------------------------------------
28+ FROM nodeapp-base AS nodeapp-dev
29+
30+ ARG NODE_ENV=development
31+ ARG NODE_UID=1000
32+ ENV NODE_UID=$NODE_UID
33+ ENV NODE_ENV=$NODE_ENV
34+ ENV NPM_CONFIG_PREFIX=/home/node/app/.npm
35+ ENV NPM_CONFIG_CACHE=/home/node/app/.npm
36+
37+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
38+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
39+ set -ex && \
40+ apt-get update && \
41+ apt-get install --no-install-recommends -y \
42+ # Alphabetical order per best practice
43+ # (To make finding packages in lists easier and to help avoid duplicates)
44+ git \
45+ curl \
46+ make \
47+ tar \
48+ unzip \
49+ zip
50+
51+ RUN usermod -u $NODE_UID node && \
52+ groupmod -g $NODE_UID node && \
53+ usermod -d /home/node -m node && \
54+ chown -R $NODE_UID:$NODE_UID /home/node
55+
56+ USER $NODE_UID
57+
58+ CMD ["/bin/bash" ]
59+
60+ # -----------------------------------------------------------------------------
61+ # TARGET 2: Nodeapp image
2762# -----------------------------------------------------------------------------
2863FROM nodeapp-base AS nodeapp
2964
@@ -40,6 +75,6 @@ EXPOSE $PORT
4075CMD [ "node" , "-r" , "dotenv/config" , "build" ]
4176
4277# -----------------------------------------------------------------------------
43- # TARGET 2 : Final image
78+ # TARGET 3 : Final image
4479# -----------------------------------------------------------------------------
4580FROM nodeapp AS final
0 commit comments