21 lines
542 B
Docker
21 lines
542 B
Docker
# syntax=docker/dockerfile:1.6
|
|
FROM node:22-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy manifests first for better caching
|
|
COPY package*.json ./
|
|
|
|
# Install prod deps (works even if package-lock is missing or minimal)
|
|
RUN --mount=type=cache,target=/root/.npm npm install --omit=dev
|
|
|
|
# Copy the rest
|
|
COPY . .
|
|
|
|
ENV NODE_ENV=production
|
|
EXPOSE 3000
|
|
|
|
# Prisma client is generated on install, but ensure at runtime if needed:
|
|
# (Coolify/containers usually run as root in alpine; OK)
|
|
CMD ["sh","-c","node -e "console.log('API starting…')" && node src/server.js"]
|