Skip to content

Commit d812f22

Browse files
feat(dev): added Dockerfile with multistage build and compose file
1 parent c61c818 commit d812f22

File tree

2 files changed

+68
-53
lines changed

2 files changed

+68
-53
lines changed

Dockerfile

Lines changed: 67 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,67 @@
1-
FROM node:21.1.0-alpine AS base
2-
3-
ARG NODE_ENV=production
4-
ENV NODE_ENV=${NODE_ENV}
5-
6-
WORKDIR /app
7-
8-
RUN apk add --no-cache libc6-compat
9-
10-
COPY package.json package-lock.json ./
11-
12-
# Development Stage
13-
FROM base AS dev
14-
15-
RUN npm install
16-
17-
COPY . .
18-
19-
RUN npx prisma generate
20-
21-
RUN chown -R node:node /app
22-
23-
USER node
24-
25-
EXPOSE 3000
26-
27-
# Run development server
28-
CMD ["sh", "-c", "npx prisma migrate dev && npm run dev"]
29-
30-
#Production Stage
31-
FROM base AS prod
32-
33-
ENV NODE_ENV=production
34-
35-
RUN npm ci --omit=dev
36-
37-
COPY --from=dev /app/node_modules ./node_modules
38-
COPY --from=dev /app/prisma ./prisma
39-
COPY --from=dev /app/src ./src
40-
COPY --from=dev /app/package.json ./
41-
42-
RUN npx prisma generate
43-
44-
RUN chown -R node:node /app
45-
46-
USER node
47-
48-
EXPOSE 3000
49-
50-
# Run Prisma migrations & start the app in production mode
51-
CMD ["sh", "-c", "npx prisma migrate deploy && exec npm run start"]
52-
1+
# Base Stage
2+
FROM node:21.1.0-alpine AS base
3+
4+
ARG NODE_ENV=production
5+
6+
ENV NODE_ENV=${NODE_ENV}
7+
8+
WORKDIR /app
9+
10+
RUN apk add --no-cache libc6-compat
11+
12+
COPY package.json package-lock.json ./
13+
14+
# Development Stage
15+
FROM base AS dev
16+
17+
RUN npm install
18+
19+
COPY . .
20+
21+
RUN npx prisma generate
22+
23+
RUN chown -R node:node /app
24+
25+
USER node
26+
27+
EXPOSE 3000
28+
29+
# Start dev server
30+
CMD ["sh", "-c", "npm run dev"]
31+
32+
# Build Stage
33+
FROM base AS build
34+
35+
RUN npm install
36+
37+
COPY . .
38+
39+
RUN npx prisma generate
40+
41+
RUN npm run build:prod
42+
43+
# Production Stage
44+
FROM base AS prod
45+
46+
ENV NODE_ENV=production
47+
48+
RUN npm ci --omit=dev
49+
50+
COPY --from=build /app/dist ./dist
51+
52+
COPY --from=build /app/prisma ./prisma
53+
54+
COPY --from=build /app/package.json ./
55+
56+
COPY --from=build /app/tsconfig.json ./
57+
58+
RUN npx prisma generate
59+
60+
RUN chown -R node:node /app
61+
62+
USER node
63+
64+
EXPOSE 3000
65+
66+
# Start prod server
67+
CMD ["node", "./dist/index.js"]

docker-compose.override.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ services:
1414
- postgres
1515
volumes:
1616
- .:/app
17-
command: ["sh", "-c", "npm install && npx prisma migrate dev && npm run dev"]
17+
command: ["sh", "-c", "npm install && npm run dev"]
1818
develop:
1919
watch:
2020
- action: sync

0 commit comments

Comments
 (0)