ft_transcendence/src/Dockerfile
Maix0 8a3481ea8b feat(monitoring): general fixup
- added healthcheck for every service
- added nginx second "server" block for monitoring
    all monitoring services are now behind this nginx reverse proxy
- fixed logging driver not present for chat service
2025-12-17 19:23:47 +01:00

58 lines
1.9 KiB
Docker

FROM node:22-alpine AS pnpm_base
RUN npm install --global pnpm@10 --no-fund -q;
RUN apk add make python3 gcc clang build-base musl-dev;
RUN apk add --no-cache curl
FROM pnpm_base AS deps
WORKDIR /build
ARG SERVICE
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml /build/
COPY @shared/package.json /build/@shared/
COPY ${SERVICE}/package.json /build/${SERVICE}/
RUN pnpm install --frozen-lockfile;
FROM pnpm_base AS builder
ARG SERVICE
WORKDIR /build
COPY package.json /build/
COPY @shared/package.json /build/@shared/
COPY ${SERVICE}/ /build/${SERVICE}
COPY tsconfig.base.json pnpm-workspace.yaml pnpm-lock.yaml /build/
COPY ${SERVICE}/entrypoint.sh /build/
COPY --from=deps /build/node_modules /build/node_modules
COPY @shared/ /build/@shared/
COPY ${SERVICE}/ /build/${SERVICE}/
RUN cd /build/${SERVICE} && \
pnpm run build:prod && \
mkdir -p /dist/@shared /dist/${SERVICE} && \
cp /build/pnpm-workspace.yaml /dist/pnpm-workspace.yaml && \
cp /build/pnpm-lock.yaml /dist/pnpm-lock.yaml && \
cp /build/@shared/package.json /dist/@shared/ && \
cp /build/${SERVICE}/package.json /dist/${SERVICE}/ && \
cp /build/entrypoint.sh /dist/ && \
chmod +x /dist/entrypoint.sh;
FROM pnpm_base
WORKDIR /src
ARG EXTRA_FILES=empty
COPY --from=builder /dist /src
COPY --from=deps /build/node_modules /src/node_modules
COPY ${EXTRA_FILES} /extra
ENTRYPOINT [ "/src/entrypoint.sh" ]
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f -s http://localhost/monitoring?docker || exit 1
CMD ["node", "/src/run.cjs"]