d03ef85b64
- 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>
28 lines
1.2 KiB
Docker
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"]
|