- 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
58 lines
1.9 KiB
Docker
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"]
|
|
|