eletrotupi / tcc/ api/Dockerfile.production5a5529d8880cea7f121f2e2e8cb26d1fb487dc94
775 B | 36 lines Raw
1
FROM node:24-alpine3.23 AS deps
2

3
RUN apk add --no-cache build-base yaml-dev
4

5
ARG UID=1000
6
ARG GID=1000
7

8
USER ${UID}:${GID}
9
WORKDIR /app
10

11
COPY --chown=${UID}:${GID} package*.json ./
12
RUN npm ci --frozen-lockfile --omit=dev
13

14
COPY --chown=${UID}:${GID} prisma ./prisma/
15
RUN npx prisma generate
16

17
# For runtime then:
18
FROM node:24-alpine3.23
19

20
RUN apk add --no-cache bash postgresql17-client valkey-cli
21

22
ARG UID=1000
23
ARG GID=1000
24

25
USER ${UID}:${GID}
26
WORKDIR /app
27

28
COPY --from=deps --chown=${UID}:${GID} /app/node_modules ./node_modules
29
COPY --from=deps --chown=${UID}:${GID} /app/node_modules/.prisma ./node_modules/.prisma
30

31
COPY --chown=${UID}:${GID} . .
32

33
EXPOSE 3000
34

35
# migrate then start — migrations are idempotent
36
CMD ["sh", "-c", "npx prisma migrate deploy && npm run prod"]