Files
rx.scoreodonto.com/dental-server/Dockerfile
T
VPS 4 Deploy Agent d03ef85b64
build-and-promote / build (push) Has been skipped
build-and-promote / promote (push) Failing after 3m34s
fix(docker): imagem 1.62GB->340MB (sharp prebuilt, sem vips/toolchain; updates/ fora da imagem)
- sharp usa binario prebuilt (libvips embarcado) -> remove apk vips/vips-dev (camada ~400MB)
- toolchain (python3/make/g++) virtual, removido na mesma RUN
- .dockerignore exclui updates/ (196MB, servido por volume), data/, bkp/, **/node_modules
- corrige PUT 500/499 no registry (camadas grandes estouravam o limite de upload)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 05:38:27 +02:00

28 lines
1.2 KiB
Docker

FROM node:22-alpine
WORKDIR /app
# Copiar lock/package primeiro (camada de cache do npm install)
COPY package*.json ./
# Build deps do sharp em camada VIRTUAL: instala, compila e REMOVE na mesma RUN.
# O runtime fica só com 'vips' (libvips compartilhada que o sharp linka) — sem
# python3/make/g++/vips-dev. Isso evita a camada gigante (~547MB) que estourava o
# limite de upload do registry (PUT 500). Ver Documentos-Unicos/projetos/rx.scoreodonto.com.
# O sharp usa o binário PREBUILT (libvips embarcado, ~17MB) — NÃO precisa de vips/vips-dev
# do sistema (instalá-los fazia o sharp compilar do fonte, gerando uma camada de ~400MB que
# estourava o limite de upload do registry). O toolchain entra virtual (caso outra dep nativa
# precise compilar) e sai na mesma RUN. Ver Documentos-Unicos/projetos/rx.scoreodonto.com.
RUN apk add --no-cache --virtual .build-deps python3 make g++ \
&& npm install --production \
&& npm cache clean --force \
&& apk del .build-deps
# Código da app. dental-client/node_modules é excluído pelo .dockerignore; o Express
# serve apenas dental-client/dist/ (gerado pela CI antes do docker build).
COPY . .
EXPOSE 3000
CMD ["npm", "start"]