FROM node:20-alpine AS builder WORKDIR /build COPY package.json ./ RUN npm install COPY client/package.json ./client/ RUN cd client && npm install COPY client/ ./client/ RUN cd client && npm run build FROM node:20-alpine AS production RUN apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ENV NODE_ENV=production ENV PORT=3001 ENV DB_PATH=/data/cpas.db WORKDIR /app COPY --from=builder /build/node_modules ./node_modules COPY --from=builder /build/client/dist ./client/dist COPY server.js ./ COPY package.json ./ COPY db/ ./db/ COPY pdf/ ./pdf/ COPY client/public/static ./client/dist/static RUN mkdir -p /data EXPOSE 3001 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD wget -qO- http://localhost:3001/api/health || exit 1 CMD ["node", "server.js"]