-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
63 lines (45 loc) · 1.4 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
55
56
57
58
59
60
61
62
63
# Base Stage
FROM node:18.12.1-alpine3.15 AS base
WORKDIR /home/node/app
ENV NODE_ENV="development"
ENV CI=true
RUN wget -q -t3 'https://packages.doppler.com/public/cli/rsa.8004D9FF50437357.key' -O /etc/apk/keys/cli@doppler-8004D9FF50437357.rsa.pub && \
echo 'https://packages.doppler.com/public/cli/alpine/any-version/main' | tee -a /etc/apk/repositories
RUN apk add -u --no-cache \
dumb-init \
fontconfig \
jq \
nodejs \
doppler \
build-base \
g++ \
cairo-dev \
jpeg-dev \
pango-dev \
giflib-dev
COPY --chown=node:node yarn.lock .
COPY --chown=node:node package.json .
COPY --chown=node:node .yarn/ .yarn/
COPY --chown=node:node doppler.yaml .
RUN sed -i 's/dev/prd/g' doppler.yaml
COPY --chown=node:node .yarnrc.yml .
# Remove global cache config line
RUN echo "$(tail -n +2 .yarnrc.yml)" > .yarnrc.yml
ENTRYPOINT [ "dumb-init", "--" ]
# Build Stage
FROM base AS builder
WORKDIR /home/node/app
ENV NODE_ENV="development"
COPY --chown=node:node tsconfig.json tsconfig.json
RUN yarn install --immutable
COPY --chown=node:node src/ src/
RUN yarn run build
# Runner Stage
FROM base AS runner
WORKDIR /home/node/app
ENV NODE_ENV="production"
COPY --chown=node:node --from=builder /home/node/app/dist dist
RUN yarn workspaces focus --all --production
RUN chown node:node /home/node/app
USER node
CMD [ "doppler", "run", "--", "yarn", "start" ]