FROM node:22-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci --legacy-peer-deps COPY . . RUN npm run build FROM node:22-alpine AS runtime WORKDIR /app ENV NODE_ENV=production ENV PORT=4173 ARG COMMIT_SHA=unknown ENV COMMIT_SHA=${COMMIT_SHA} COPY package*.json ./ RUN npm ci --omit=dev --legacy-peer-deps COPY --from=build /app/dist ./dist COPY server.js ./server.js COPY server/ ./server/ COPY --from=build /app/A_Study_of_Titus.pdf ./A_Study_of_Titus.pdf # Copy seed data to a separate directory so the entrypoint can seed /app/data # only when no live data exists yet — upgrades never overwrite existing data. COPY data ./data-seed RUN mkdir -p /app/data COPY entrypoint.sh ./entrypoint.sh RUN chmod +x ./entrypoint.sh EXPOSE 4173 ENTRYPOINT ["./entrypoint.sh"]