Files

36 lines
1.1 KiB
Docker

FROM pandoc/typst:latest-alpine AS typst
FROM node:22-alpine
# Enable corepack and activate pnpm
RUN corepack enable && corepack prepare pnpm@11.3.0 --activate
# pm2 manages the process; sequelize-cli runs migrations on startup
RUN npm install -g pm2 sequelize-cli
# Typst — compiles certificate.typ into the downloadable PDF certificate.
# Not available as an apk package, so lift the binary out of pandoc/typst.
COPY --from=typst /usr/bin/typst /usr/local/bin/typst
WORKDIR /app
# Workspace manifests first (cache-friendly), then a filtered install —
# pnpm needs every workspace package's manifest present to resolve the
# graph even though only apps/api's deps get installed here. pnpm-lock.yaml
# is gitignored (not committed), so this resolves fresh on every build
# rather than installing from a frozen lockfile.
COPY package.json pnpm-workspace.yaml ./
COPY apps/api/package.json ./apps/api/package.json
COPY apps/web/package.json ./apps/web/package.json
RUN pnpm install --filter api...
COPY apps/api ./apps/api
WORKDIR /app/apps/api
RUN chmod +x docker-entrypoint.sh
EXPOSE 3024
ENTRYPOINT ["./docker-entrypoint.sh"]