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>
41 lines
1.4 KiB
Docker
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" ]
|