11# set global args
2- ARG NUXT_COMMUNITY_API_URL HOST=0.0.0.0 PORT=3000 USER=node TARGET_ENV DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG= 'false' SESSION_COOKIE_NAME= 'connect.sid'
2+ ARG USER=node DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED}
33
44# ##########
55# BUILDER #
66# ##########
77FROM node:18.14.0 AS builder
88
9- # pass the global args
10- ARG NUXT_COMMUNITY_API_URL
11- ARG HOST
12- ARG PORT
13- ARG TARGET_ENV
14- ARG DRONE_COMMIT_SHA
15- ARG DRONE_BUILD_NUMBER
16- ARG DRONE_BUILD_LINK
17- ARG DRONE_COMMIT_LINK
18- ARG DRONE_REPO_LINK
19- ARG DRONE_BUILD_FINISHED
20- ARG DEBUG
21- ARG SESSION_COOKIE_NAME
229
2310# copy build context and install dependencinpm res
2411WORKDIR /workspace
2512COPY . .
2613RUN npm install
2714
28- # inject build args as enviroment variables
29- ENV NUXT_COMMUNITY_API_URL=${NUXT_COMMUNITY_API_URL} HOST=${HOST} PORT=${PORT} TARGET_ENV=${TARGET_ENV} DRONE_COMMIT_SHA=$DRONE_COMMIT_SHA DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG=${DEBUG} SESSION_COOKIE_NAME=${SESSION_COOKIE_NAME}
3015# build NuxtJS project
3116RUN npm run build
3217
@@ -36,35 +21,27 @@ RUN npm run build
3621FROM node:18-slim
3722
3823# pass the global args
39- ARG NUXT_COMMUNITY_API_URL
40- ARG HOST
41- ARG PORT
4224ARG USER
43- ARG TARGET_ENV
4425ARG DRONE_COMMIT_SHA
4526ARG DRONE_BUILD_NUMBER
4627ARG DRONE_BUILD_LINK
4728ARG DRONE_COMMIT_LINK
4829ARG DRONE_REPO_LINK
4930ARG DRONE_BUILD_FINISHED
50- ARG DEBUG
51- ARG SESSION_COOKIE_NAME
5231
5332# copy builder output to project workdir
5433WORKDIR /app
55- COPY --from=builder --chown=${USER}:${USER} /workspace/.nuxt /app/.nuxt
56- COPY --from=builder --chown=${USER}:${USER} /workspace/.output /app/.output
57- COPY --from=builder --chown=${USER}:${USER} /workspace/node_modules /app/node_modules
5834COPY --from=builder --chown=${USER}:${USER} /workspace/package.json /app/
59-
60- # inject build args as enviroment variables
61- ENV NUXT_COMMUNITY_API_URL=${NUXT_COMMUNITY_API_URL} HOST=${HOST} PORT=${PORT} TARGET_ENV=${TARGET_ENV} DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED} DEBUG=${DEBUG} SESSION_COOKIE_NAME=${SESSION_COOKIE_NAME}
35+ COPY --from=builder --chown=${USER}:${USER} /workspace/.output /app/.output
6236
6337# set user context
6438USER ${USER}
6539
40+ # inject build args as enviroment variables
41+ ENV NUXT_PUBLIC_BUILD_COMMIT_SHA=${DRONE_COMMIT_SHA} NUXT_PUBLIC_BUILD_NUMBER=${DRONE_BUILD_NUMBER} NUXT_PUBLIC_BUILD_LINK=${DRONE_BUILD_LINK} NUXT_PUBLIC_BUILD_COMMIT_LINK=${DRONE_COMMIT_LINK} NUXT_PUBLIC_BUILD_REPO_LINK=${DRONE_REPO_LINK} NUXT_PUBLIC_BUILD_TIMESTAMP=${DRONE_BUILD_FINISHED}
42+
6643# expose port
6744EXPOSE ${PORT}
6845
6946# run for production
70- CMD [ "npm " , "run" , "start " ]
47+ CMD [ "node " , "/app/.output/server/index.mjs " ]
0 commit comments