11FROM oven/bun:1.3 AS base
2- WORKDIR /app
2+ WORKDIR /var/www/api
33
44# -----------------------------
55# deps stage - cache dependencies
@@ -17,15 +17,7 @@ RUN bunx prisma generate
1717FROM deps AS build
1818
1919COPY . .
20- RUN bun build src/server.ts --outdir dist
21-
22- # -----------------------------
23- # prod deps stage - install only production dependencies
24- # -----------------------------
25- FROM base AS prod-deps
26-
27- COPY package.json bun.lock* ./
28- RUN bun install --production --frozen-lockfile
20+ RUN bun build src/server.ts --target=bun --production --outdir dist
2921
3022# -----------------------------
3123# development stage
@@ -40,13 +32,16 @@ CMD ["bun", "src/server.ts"]
4032# -----------------------------
4133
4234
43- FROM prod-deps AS production
35+ FROM oven/bun:1-slim AS production
36+
37+ WORKDIR /var/www/api
38+ RUN groupadd -g 1001 nodejs && useradd -u 1001 -g nodejs -m bunjs
4439
45- RUN addgroup -g 1001 -S nodejs && adduser -S bunjs -u 1001
40+ COPY --from=build --chown=bunjs:nodejs /var/www/api/dist ./dist
41+ COPY --from=deps --chown=bunjs:nodejs /var/www/api/src/generated ./dist/generated
4642
47- COPY --from=deps --chown=bunjs:nodejs /app/src/generated ./src/generated
48- COPY --from=build --chown=bunjs:nodejs /app/dist ./dist
4943
44+ RUN chown -R bunjs:nodejs /var/www/api
5045USER bunjs
5146
5247ENV NODE_ENV=production
@@ -57,4 +52,4 @@ EXPOSE 3000
5752HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
5853 CMD wget -qO- http://localhost:3000/health || exit 1
5954
60- CMD ["bun" , "dist/server.js" ]
55+ CMD ["bun" , "./ dist/server.js" ]
0 commit comments