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