1
- FROM node:16.15.0-alpine as builder
1
+ # Arguments
2
+ ARG NODE_VERSION=lts-alpine
3
+
4
+ # NOTE: Ensure you set NODE_VERSION Build Argument as follows...
5
+ #
6
+ # export NODE_VERSION="$(cat .nvmrc)-alpine" \
7
+ # docker build \
8
+ # --build-arg NODE_VERSION=$NODE_VERSION \
9
+ # -t mojaloop/central-event-processor:local \
10
+ # . \
11
+ #
12
+
13
+ # Build Image
14
+ FROM node:${NODE_VERSION} as builder
15
+ USER root
16
+
2
17
WORKDIR /opt/app
3
18
4
19
RUN apk --no-cache add git
5
- RUN apk add --no-cache -t build-dependencies make gcc g++ python3 libtool libressl-dev openssl-dev autoconf automake \
6
- && cd $(npm root -g)/npm \
7
- && npm config set unsafe-perm true \
8
- && npm install -g node-gyp
20
+ RUN apk add --no-cache -t build-dependencies make gcc g++ python3 libtool openssl-dev autoconf automake bash \
21
+ && cd $(npm root -g)/npm
22
+
23
+ COPY package.json package-lock.json* /opt/app/
24
+
25
+ RUN npm ci
9
26
10
- COPY package*.json /opt/app/
27
+ RUN apk del build-dependencies
11
28
12
- RUN npm ci --production
29
+ COPY src /opt/app/src
30
+ COPY config /opt/app/config
31
+
32
+ FROM node:${NODE_VERSION}
13
33
14
- FROM node:16.15.0-alpine
15
34
WORKDIR /opt/app
16
35
17
36
# Create empty log file & link stdout to the application log file
18
37
RUN mkdir ./logs && touch ./logs/combined.log
38
+ # Links combined to stdout
19
39
RUN ln -sf /dev/stdout ./logs/combined.log
20
40
21
- # Create a non-root user: ml-user
22
- RUN adduser -D ml-user
23
- USER ml-user
24
-
25
- COPY --chown=ml-user --from=builder /opt/app .
41
+ # Create a non-root user:app-user
42
+ RUN adduser -D app-user
43
+ USER app-user
26
44
27
- COPY src /opt/app/src
28
- COPY config /opt/app/config
45
+ COPY --chown=app-user --from=builder /opt/app .
46
+ RUN npm prune --production
29
47
30
48
EXPOSE 3080
31
- CMD ["npm" , "run" , " start" ]
49
+ CMD ["npm" , "start" ]
0 commit comments