goodgrief/Dockerfile

44 lines
1.5 KiB
Docker

FROM docker.io/library/node:22-bookworm-slim AS workspace-base
WORKDIR /app
COPY package.json package-lock.json ./
COPY apps/admin/package.json apps/admin/package.json
COPY apps/submission/package.json apps/submission/package.json
COPY packages/cue-engine/package.json packages/cue-engine/package.json
COPY packages/effects/package.json packages/effects/package.json
COPY packages/render-engine/package.json packages/render-engine/package.json
COPY packages/shared-types/package.json packages/shared-types/package.json
COPY services/api/package.json services/api/package.json
COPY services/worker/package.json services/worker/package.json
RUN npm ci
FROM workspace-base AS workspace-source
WORKDIR /app
COPY . .
FROM workspace-source AS node-runtime
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libheif1 \
libheif-plugin-libde265 \
libde265-0 \
&& rm -rf /var/lib/apt/lists/*
FROM workspace-source AS admin-build
WORKDIR /app
RUN npm run build --workspace @goodgrief/admin
FROM workspace-source AS submission-build
WORKDIR /app
RUN npm run build --workspace @goodgrief/submission
FROM docker.io/library/nginx:1.27-alpine AS admin-web
COPY docker/nginx/spa.conf /etc/nginx/conf.d/default.conf
COPY --from=admin-build /app/apps/admin/dist /usr/share/nginx/html
FROM docker.io/library/nginx:1.27-alpine AS submission-web
COPY docker/nginx/spa.conf /etc/nginx/conf.d/default.conf
COPY --from=submission-build /app/apps/submission/dist /usr/share/nginx/html