Files
imen_pishghaman/docker/api.Dockerfile
T
S. EsmaeiliandClaude Haiku 5.5 10e453e4be build: ship pre-built API bundle; images copy output instead of installing
- API: `pnpm build` bundles dist/ into apps/api/.output (esbuild), with
  Linux musl native packages for sharp and argon2 kept alongside
- docker/api.Dockerfile copies that output; no pnpm install on the server
- add dist/migrate.js (prisma migrate deploy equivalent, same
  _prisma_migrations table and lock) so the Prisma CLI is not needed at runtime
- pnpm-workspace: supportedArchitectures for linux/x64/musl
- admin: apps/admin/.env.production sets VITE_SITE_URL for the production build
- drop NPM_REGISTRY / SITE_URL build args from compose and .env.example
- gitignore: anchor node_modules rules so pre-built node_modules are committed
- README: describe the pre-built deploy flow

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 14:41:31 +03:30

22 lines
705 B
Docker

# NestJS API. Pre-built output: `pnpm build` bundles it into apps/api/.output (apps/api/scripts/bundle.mjs).
# docker build -f docker/api.Dockerfile -t imen-api . # API server
# docker build -f docker/api.Dockerfile --target migrate -t imen-migrate . # one-off migrations
ARG NODE_IMAGE=docker.arvancloud.ir/node:24-alpine
FROM ${NODE_IMAGE} AS app
WORKDIR /app
ENV NODE_ENV=production
COPY apps/api/.output ./
COPY apps/api/prisma/migrations ./prisma/migrations
COPY apps/api/seed-assets ./seed-assets
# applies pending migrations and exits
FROM app AS migrate
CMD ["node", "dist/migrate.js"]
FROM app AS runtime
ENV PORT=4000
USER node
EXPOSE 4000
CMD ["node", "dist/main.js"]