| 1234567891011121314151617181920212223242526272829 |
- # Single image for both modes. The repository itself is bind-mounted at runtime
- # (see docker-compose.yml), so day-to-day code changes never require a rebuild —
- # the entrypoint installs/builds on start and `dev` mode additionally watches.
- FROM node:22-bookworm-slim
- # openssl is required by Prisma's query engine; ca-certificates for outbound TLS.
- RUN apt-get update \
- && apt-get install -y --no-install-recommends openssl ca-certificates curl \
- && rm -rf /var/lib/apt/lists/*
- WORKDIR /app
- # Warm the layer cache with the dependency manifests only.
- COPY package.json package-lock.json ./
- RUN npm ci --include=dev
- COPY . .
- RUN npx prisma generate
- COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
- RUN chmod +x /usr/local/bin/entrypoint.sh
- ENV NODE_ENV=production
- EXPOSE 3000
- HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
- CMD curl -fsS http://127.0.0.1:3000/health || exit 1
- ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|