-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathDockerfile
54 lines (38 loc) · 1.21 KB
/
Dockerfile
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
#####################
### builder image ###
FROM node:20.12.2-alpine as builder
ARG USER_ID
ARG GROUP_ID
RUN apk update && \
apk upgrade && \
rm -rf /var/cache/apk/* && \
if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
deluser node && \
addgroup -g ${GROUP_ID} node && \
adduser -u ${USER_ID} -D node -G node \
;fi
COPY --chown=node:node package.json package-lock.json /usr/app/
USER node
WORKDIR /usr/app
EXPOSE 10300 9090
##########################
#### production image ###
FROM builder as transifex-delivery
ENV NODE_ENV=production
# Install packages from package-lock.json to avoid deploying unexpected
# package versions. Then, remove all not production packages.
RUN npm ci --only=prod
COPY --chown=node:node config /usr/app/config
COPY --chown=node:node ./src /usr/app/src
COPY --chown=node:node newrelic.js /usr/app/
CMD ["npm", "start"]
##########################
#### devel image ###
FROM builder as transifex-delivery-devel
ENV NODE_ENV=development
RUN npm ci
COPY --chown=node:node config /usr/app/config
COPY --chown=node:node ./src /usr/app/src
COPY --chown=node:node ./tests /usr/app/tests
COPY --chown=node:node ./.eslintrc.json /usr/app
CMD ["npm", "run", "start-dev"]