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>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
node_modules
|
||||
**/node_modules
|
||||
dental-client/node_modules
|
||||
npm-debug.log
|
||||
.env
|
||||
.env.local
|
||||
@@ -6,3 +8,8 @@ npm-debug.log
|
||||
dental_images.db
|
||||
uploads
|
||||
processed
|
||||
updates
|
||||
data
|
||||
bkp
|
||||
.git
|
||||
**/*.map
|
||||
|
||||
+15
-11
@@ -2,22 +2,26 @@ FROM node:22-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Instalar dependências necessárias para o SQLite e processamento de imagens (como python3, make, g++, vips se necessário pelo sharp)
|
||||
RUN apk add --no-cache python3 make g++ vips-dev
|
||||
|
||||
# Copiar os arquivos de lock e package
|
||||
# Copiar lock/package primeiro (camada de cache do npm install)
|
||||
COPY package*.json ./
|
||||
|
||||
# Instalar dependências do backend (produção)
|
||||
RUN npm install --production
|
||||
# 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
|
||||
|
||||
# Copiar o restante do código
|
||||
# NOTA: dental-client/dist/ deve ser gerado ANTES do docker build pelo deploy-prod.sh
|
||||
# O build do React (npm run build) é feito na VPS4 antes do docker compose build
|
||||
# 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 . .
|
||||
|
||||
# Expor a porta 3000 (apenas para o container)
|
||||
EXPOSE 3000
|
||||
|
||||
# Comando para rodar a aplicação
|
||||
CMD ["npm", "start"]
|
||||
|
||||
Reference in New Issue
Block a user