# syntax=docker/dockerfile:1 # --- Build the web app --- FROM node:24-alpine AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY . . RUN npm run build # --- Runtime: API server + built web app --- FROM node:24-alpine ENV NODE_ENV=production \ PORT=3000 \ DATABASE_URL=pglite:///app/data/pglite WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev && npm cache clean --force COPY server ./server COPY shared ./shared COPY --from=build /app/dist ./dist RUN mkdir -p /app/data && chown node:node /app/data USER node VOLUME /app/data EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s CMD wget -qO- http://127.0.0.1:3000/api/health || exit 1 CMD ["node", "server/index.ts"]