documents/Dockerfile
Breno Pires 9165f1e9ab feat: microservico documents — catalogo por UF, documentos com versoes, compliance e analise [skip ci]
Espelho do routines: NestJS 10 + Fastify + TypeORM, modulos catalog (override
por UF), document (versoes + storage GCS), compliance (mesmo score do painel),
alerts (regua de vencimento, envio e v1.2) e analise plugavel (KeywordAnalyzer
-> OCR/LLM). 38 testes. Deploy aguarda banco 'documents' e secrets no hml2 —
por isso o [skip ci] no bootstrap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 01:42:24 -03:00

41 lines
1.4 KiB
Docker

# Node 20, não 18: o `@apollo/gateway` (transitivo do @clubpetrodev/nestjs-mapped-exception)
# puxa make-fetch-happen@15, que exige "^20.17.0 || >=22.9.0". Com engine-strict
# o yarn falha o build no Node 18 — foi o que quebrou a primeira publicação do routines.
FROM node:20-slim as base
ENV NODE_OPTIONS=--max_old_space_size=2048
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
build-essential \
&& ln -s /usr/bin/python3 /usr/bin/python \
&& rm -rf /var/lib/apt/lists/*
FROM base as builder
WORKDIR /usr/src/app
# O .npmrc NÃO é versionado (as libs @clubpetrodev/* precisam de token privado).
# Ele é gerado a partir do build-arg e removido antes da imagem final.
ARG NPM_TOKEN
COPY package.json yarn.lock tsconfig.json tsconfig.build.json nest-cli.json ./
RUN printf '//registry.npmjs.org/:_authToken=%s\nengine-strict=true\n' "$NPM_TOKEN" > .npmrc
COPY src/ src/
RUN yarn install --immutable
RUN yarn build
RUN rm -f .npmrc
FROM base as runner
ENV NODE_OPTIONS=--max_old_space_size=2048
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/src/ormconfig.ts ./src/ormconfig.ts
COPY --from=builder /usr/src/app/package.json /usr/src/app/yarn.lock /usr/src/app/tsconfig.json /usr/src/app/tsconfig.build.json /usr/src/app/nest-cli.json ./
COPY --from=builder /usr/src/app/dist ./dist
COPY --from=builder /usr/src/app/node_modules ./node_modules
EXPOSE 3000
CMD [ "yarn", "start:prod" ]