# gitzone dockerfile_service ## STAGE 1 // BUILD FROM code.foss.global/host.today/ht-docker-node:lts AS build COPY ./ /app WORKDIR /app RUN pnpm config set store-dir .pnpm-store RUN rm -rf node_modules && pnpm install RUN pnpm run build RUN rm -rf .pnpm-store node_modules && pnpm install --prod ## STAGE 2 // PRODUCTION FROM code.foss.global/host.today/ht-docker-node:alpine-node AS production # gcompat + libstdc++ for glibc-linked Rust binaries (smartproxy, smartmta, remoteingress) RUN apk add --no-cache gcompat libstdc++ WORKDIR /app COPY --from=build /app /app ENV DCROUTER_MODE=OCI_CONTAINER ENV DCROUTER_HEAP_SIZE=512 ENV UV_THREADPOOL_SIZE=16 RUN pnpm install -g @servezone/healthy HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 CMD [ "healthy" ] LABEL org.opencontainers.image.title="dcrouter" \ org.opencontainers.image.description="Multi-service datacenter gateway" \ org.opencontainers.image.source="https://code.foss.global/serve.zone/dcrouter" # HTTP/HTTPS, SMTP/Submission/SMTPS, DNS, RADIUS, OpsServer, RemoteIngress, dynamic range EXPOSE 80 443 25 587 465 53/tcp 53/udp 1812/udp 1813/udp 3000 8443 29000-30000 CMD ["sh", "-c", "node --max_old_space_size=${DCROUTER_HEAP_SIZE} ./cli.js"]