generated from robertsmieja-templates/typescript-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
55 lines (42 loc) · 1.27 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
ARG NODE_IMAGE=14.17.3-alpine3.14
FROM node:${NODE_IMAGE} as build
ENV NPM_CONFIG_LOGLEVEL warn
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# RUN apk add --no-cache \
# ffmpeg \
# chromium \
# ttf-freefont \
# ca-certificates
# RUN apk add --no-cache --virtual build-dependencies \
# python3 \
# build-base
RUN npm i -g pnpm
# Create app directory
RUN mkdir -p /home/node/robbot/node_modules && chown -R node:node /home/node/robbot
WORKDIR /home/node/robbot/
USER node
COPY --chown=node:node . .
RUN pnpm install && \
pnpm run clean --recursive && \
pnpm run build --recursive && \
pnpm test --recursive
# ---
FROM node:${NODE_IMAGE}
RUN mkdir -p /home/node/robbot/node_modules && \
chown -R node:node /home/node/robbot
WORKDIR /home/node/robbot/
COPY --from=build \
--chown=node:node \
/home/node/robbot/node_modules/ ./node_modules/
COPY --from=build \
--chown=node:node \
/home/node/robbot/dist/ ./dist/
COPY --from=build \
--chown=node:node \
/home/node/robbot/packages/ ./packages/
COPY --from=build \
--chown=node:node \
/home/node/robbot/middleware/ ./middleware/
USER node
CMD [ "node", "--trace-warnings", "./dist/index.js" ]