FROM node:24-alpine AS build RUN apk add --no-cache build-base WORKDIR /build COPY . . RUN npm ci && \ npm run build && \ npm run reset && \ npm ci --workspace=backend --omit=dev --no-audit --no-fund FROM node:24-alpine AS sync-in RUN apk add --no-cache su-exec && \ mkdir -p /app/data /app/environment WORKDIR /app COPY --from=build --chown=8888:8888 /build/LICENSE . COPY --from=build --chown=8888:8888 /build/dist/ . COPY --from=build --chown=8888:8888 /build/package.json ./server/ COPY --from=build --chown=8888:8888 /build/node_modules ./node_modules COPY --from=build --chown=8888:8888 /build/backend/migrations ./migrations COPY --from=build --chown=8888:8888 /build/environment/environment.dist.yaml ./environment/environment.dist.yaml COPY --from=build --chown=8888:8888 --chmod=755 /build/scripts/docker-sync-in-server.sh ./sync-in-server.sh COPY --from=build --chown=8888:8888 --chmod=755 /build/scripts/docker-entrypoint.sh ./entrypoint.sh ENV NODE_ENV=production ENV PUID=8888 ENV PGID=8888 ENV SYNC_IN_HEALTHCHECK_URL=http://127.0.0.1:8080/healthz/ready EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD ["node", "server/infrastructure/availability/scripts/check-health.js"] ENTRYPOINT ["./entrypoint.sh"] CMD ["./sync-in-server.sh"]