-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathDockerfile
More file actions
85 lines (69 loc) · 1.99 KB
/
Dockerfile
File metadata and controls
85 lines (69 loc) · 1.99 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
ARG PORT=5050
ARG SSL_PORT=5051
ARG VERSION
ARG COGNITO_ACCESS_KEY=magnito-access-key
ARG COGNITO_SECRET_KEY=magnito-secret-key
ARG COGNITO_REGION=ap-northeast-1
ARG COGNITO_USER_POOL_ID=ap-northeast-1_default
ARG COGNITO_USER_POOL_CLIENT_ID=default-client-id
ARG DATABASE_URL=file:./data/app.db
ARG SMTP_HOST=inbucket
ARG SMTP_PORT=2500
ARG SMTP_USER=fake_mail_user
ARG SMTP_PASS=fake_mail_password
FROM node:24-alpine3.22 AS builder
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm ci
COPY . ./
ARG PORT
ARG SSL_PORT
ARG VERSION
ARG COGNITO_ACCESS_KEY
ARG COGNITO_SECRET_KEY
ARG COGNITO_REGION
ARG COGNITO_USER_POOL_ID
ARG COGNITO_USER_POOL_CLIENT_ID
ARG DATABASE_URL
ARG SMTP_HOST
ARG SMTP_PORT
ARG SMTP_USER
ARG SMTP_PASS
RUN npm run batch:writeVersion -- $VERSION
RUN npm run build
FROM node:24-alpine3.22
WORKDIR /usr/src/app
ARG PORT
ARG SSL_PORT
ARG COGNITO_ACCESS_KEY
ARG COGNITO_SECRET_KEY
ARG COGNITO_REGION
ARG COGNITO_USER_POOL_ID
ARG COGNITO_USER_POOL_CLIENT_ID
ARG DATABASE_URL
ARG SMTP_HOST
ARG SMTP_PORT
ARG SMTP_USER
ARG SMTP_PASS
ENV PORT=$PORT
ENV SSL_PORT=$SSL_PORT
ENV COGNITO_ACCESS_KEY=$COGNITO_ACCESS_KEY
ENV COGNITO_SECRET_KEY=$COGNITO_SECRET_KEY
ENV COGNITO_REGION=$COGNITO_REGION
ENV COGNITO_USER_POOL_ID=$COGNITO_USER_POOL_ID
ENV COGNITO_USER_POOL_CLIENT_ID=$COGNITO_USER_POOL_CLIENT_ID
ENV DATABASE_URL=$DATABASE_URL
ENV SMTP_HOST=$SMTP_HOST
ENV SMTP_PORT=$SMTP_PORT
ENV SMTP_USER=$SMTP_USER
ENV SMTP_PASS=$SMTP_PASS
COPY --chown=node package.json package-lock.json ./
RUN npm ci --omit=dev
COPY --chown=node --from=builder /usr/src/app/.next .next/
COPY --chown=node --from=builder /usr/src/app/certificates certificates/
COPY --chown=node --from=builder /usr/src/app/data data/
HEALTHCHECK --interval=5s --timeout=5s --retries=3 CMD wget --quiet --spider http://127.0.0.1:$PORT/publicApi/health && wget --quiet --spider --no-check-certificate https://127.0.0.1:$SSL_PORT || exit 1
EXPOSE ${PORT} ${SSL_PORT}
VOLUME ["/usr/src/app/data"]
USER node
CMD ["npm", "start"]