| # Build stage -------------------------------------------------------------- | |
| FROM node:20-alpine AS build | |
| WORKDIR /app | |
| COPY package.json ./ | |
| RUN npm install --no-audit --no-fund | |
| COPY . . | |
| RUN npm run build | |
| # Runtime stage ------------------------------------------------------------ | |
| FROM node:20-alpine AS runtime | |
| WORKDIR /app | |
| COPY --from=build /app/dist ./dist | |
| COPY --from=build /app/package.json ./package.json | |
| # Tiny static-file server. | |
| RUN npm install -g serve@14.2.3 | |
| EXPOSE 3000 | |
| HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ | |
| CMD wget -qO- http://localhost:3000 >/dev/null || exit 1 | |
| CMD ["serve", "-s", "dist", "-l", "3000"] | |