Skip to content

Commit 8651ef2

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

File tree

3 files changed

+39
-54
lines changed

3 files changed

+39
-54
lines changed

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
DATABASE_URL="postgresql://jetkvm:mysecretpassword@localhost:5432/jetkvm?schema=public"
1+
DATABASE_URL="postgresql://jetkvm:mysecretpassword@localhost:5432/jetkvm?schema=public" # hostname is postgres for docker development
22

33
GOOGLE_CLIENT_ID=XXX # Google OIDC Client ID
44
GOOGLE_CLIENT_SECRET=XXX # Google OIDC Client Secret

Dockerfile

Lines changed: 37 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,37 @@
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+
WORKDIR /app
5+
6+
RUN apk add --no-cache libc6-compat
7+
8+
COPY package.json package-lock.json ./
9+
10+
FROM base AS deps
11+
RUN npm ci
12+
13+
# Build / Dev Stage
14+
FROM deps AS dev
15+
COPY . .
16+
RUN npx prisma generate
17+
RUN npm run build:prod
18+
19+
CMD ["sh", "-c", "npm run dev"]
20+
21+
# Production Stage
22+
FROM node:21.1.0-alpine AS prod
23+
24+
WORKDIR /app
25+
26+
COPY --from=dev /app/dist ./dist
27+
COPY --from=dev /app/prisma ./prisma
28+
COPY --from=dev /app/package.json ./
29+
COPY --from=dev /app/package-lock.json ./
30+
31+
# Install only production dependencies
32+
RUN npm ci --omit=dev
33+
34+
USER node
35+
EXPOSE 3000
36+
37+
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)