# Multi-stage build FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . ARG VITE_DEFAULT_RELAYS ARG VITE_ZAP_THRESHOLD ARG VITE_THREAD_TIMEOUT_DAYS ARG VITE_PWA_ENABLED ENV VITE_DEFAULT_RELAYS=${VITE_DEFAULT_RELAYS} ENV VITE_ZAP_THRESHOLD=${VITE_ZAP_THRESHOLD} ENV VITE_THREAD_TIMEOUT_DAYS=${VITE_THREAD_TIMEOUT_DAYS} ENV VITE_PWA_ENABLED=${VITE_PWA_ENABLED} RUN npm run build FROM httpd:alpine RUN apk add --no-cache gettext && \ mkdir -p /usr/local/apache2/logs && \ chown -R daemon:daemon /usr/local/apache2/logs COPY --from=builder /app/build /usr/local/apache2/htdocs/ # Ensure healthz.json exists (copy from public if not in build, or create if missing) COPY --from=builder /app/public/healthz.json /usr/local/apache2/htdocs/healthz.json COPY httpd.conf.template /usr/local/apache2/conf/httpd.conf.template COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh ARG PORT=9876 ENV PORT=${PORT} EXPOSE ${PORT} ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]