# ---- BASE ---- FROM node:24.22.1-alpine3.24@sha256:06d7adf3e0ef61a13f1d28682726366f97a15aa1888c934d3ecec86c33918b53 AS base RUN npm install -g pnpm # ---- BUILDER ---- FROM base AS builder WORKDIR /app COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./ COPY packages/common/package.json ./packages/common/ COPY packages/web/package.json ./packages/web/ COPY packages/socket/package.json ./packages/socket/ COPY packages/e2e/package.json ./packages/e2e/ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile COPY . . RUN pnpm build # ---- RUNNER ---- FROM alpine:3.24.3@sha256:be2656061b536c1883c4034790e21d0a09c5aaaf51968b89368a3c0371ea2c9a AS runner RUN apk upgrade --no-cache && apk add --no-cache nginx nodejs s6 COPY docker/nginx.conf /etc/nginx/http.d/default.conf COPY --chmod=755 docker/s6 /etc/s6 COPY --from=builder /app/packages/web/dist /app/web COPY --from=builder /app/packages/socket/dist/index.cjs /app/socket/index.cjs EXPOSE 3000 CMD ["s6-svscan", "/etc/s6"]