41 lines
663 B
Docker
41 lines
663 B
Docker
# syntax = docker/dockerfile:1
|
|
|
|
ARG NODE_VERSION=23.11.0-slim
|
|
|
|
FROM node:${NODE_VERSION} AS base
|
|
|
|
ARG PORT=3000
|
|
|
|
WORKDIR /src
|
|
|
|
# Build
|
|
FROM base AS build
|
|
|
|
COPY package.json pnpm-lock.yaml ./
|
|
RUN npm install
|
|
RUN npm rebuild sharp
|
|
|
|
COPY . .
|
|
|
|
RUN npm run build
|
|
|
|
# Production
|
|
FROM base AS production
|
|
|
|
ENV PORT=${PORT}
|
|
ENV NODE_ENV=production
|
|
|
|
COPY --from=build /src/.output /src/.output
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
CMD curl -f http://localhost:${PORT}/api/health || exit 1
|
|
|
|
EXPOSE $PORT
|
|
CMD [ "node", ".output/server/index.mjs" ]
|
|
|
|
# Development
|
|
FROM base AS development
|
|
WORKDIR /app
|
|
|
|
ENTRYPOINT [ "npm", "run", "dev" ]
|