Coves frontend - a photon fork
1# Base stage for both Bun and Node.js
2FROM alpine:3.14 AS base
3WORKDIR /app
4COPY package.json .
5
6# Bun stage
7FROM oven/bun:1.2.9-alpine AS bun-builder
8WORKDIR /app
9COPY --from=base /app/package.json .
10COPY . .
11RUN bun install
12RUN ADAPTER=bun bun run build
13
14# Node.js stage
15FROM node:20-alpine AS node-builder
16WORKDIR /app
17COPY --from=base /app/package.json .
18COPY . .
19RUN npm install --no-lockfile
20RUN ADAPTER=node npm run build
21
22# Final Node.js image
23FROM node:20-alpine AS node
24USER node
25WORKDIR /app
26COPY --from=node-builder /app/build /app/build
27COPY --from=node-builder /app/node_modules /app/node_modules
28COPY --from=node-builder /app/package.json /app/package.json
29EXPOSE 3000
30CMD ["node", "build/index.js"]
31
32# Final Bun image
33FROM oven/bun:1.2.9-alpine AS bun
34WORKDIR /app
35COPY --from=bun-builder /app/build /app/build
36COPY --from=bun-builder /app/node_modules /app/node_modules
37EXPOSE 3000
38USER bun
39CMD ["bun", "build/index.js"]