Compilações em várias etapas e imagens menores
Aprenda como os Dockerfiles em várias etapas permitem distribuir imagens enxutas para produção, separando as ferramentas de compilação do ambiente de execução final e reduzindo significativamente o tamanho da imagem.
Compilações em várias etapas e imagens menores é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Por que o tamanho da imagem é importante
Imagens grandes são mais lentas para criar, enviar e baixar, além de terem uma superfície de ataque maior. Um bom objetivo de engenharia é enviar a menor imagem que ainda execute seu aplicativo.
O problema do excesso de conteúdo
Criar um aplicativo geralmente exige compiladores, dependências de desenvolvimento e ferramentas de compilação. Se esses elementos forem parar na imagem final, ela ficará muito maior — embora o aplicativo em execução não precise de nenhum deles.
O que é uma compilação em vários estágios?
Uma compilação em vários estágios usa várias instruções FROM em um único Dockerfile. Os primeiros estágios compilam o aplicativo; o estágio final copia apenas os artefatos concluídos, deixando as ferramentas de compilação para trás.
Nomear um estágio
Dê um nome ao estágio com AS para que os estágios posteriores possam fazer referência a ele.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ciCompilar no primeiro estágio
O estágio de compilação compila ou empacota seu aplicativo. Aqui, todas as dependências de desenvolvimento e ferramentas estão disponíveis.
COPY . .
RUN npm run buildUm estágio final enxuto
Inicie o estágio final a partir de uma imagem-base mínima e copie apenas o que o aplicativo precisa para ser executado usando COPY --from.
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modulesDockerfile completo em vários estágios
A combinação dos estágios produz uma imagem final pequena, que contém o aplicativo compilado, mas nenhuma das ferramentas usadas na compilação.
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']Escolher uma imagem-base pequena
A imagem-base costuma ser o maior fator. As variantes Slim e Alpine reduzem significativamente o tamanho das imagens:
node:20~ grandenode:20-slim~ muito menornode:20-alpine~ menor, com bibliotecas mínimas
Apenas dependências de produção
Ignore as dependências de desenvolvimento na imagem de execução. Instalar com a opção de produção mantém os pacotes de teste e compilação fora da imagem.
RUN npm ci --omit=devUsar .dockerignore
O arquivo .dockerignore mantém conteúdo desnecessário fora do contexto de compilação, acelera as compilações e evita cópias acidentais de segredos ou pastas enormes.
node_modules
.git
.env
Dockerfile
*.logMedir o resultado
Verifique seu trabalho conferindo os tamanhos das imagens. Uma imagem bem construída em vários estágios pode ter uma fração do tamanho de uma imagem ingênua de estágio único.
docker images myappVerificação rápida
Teste seu conhecimento sobre compilações em vários estágios.
Recapitulação
Você aprendeu a distribuir imagens Docker enxutas:
- Compilações em vários estágios usam vários estágios
FROMem um único Dockerfile - Compile em um estágio inicial e depois use
COPY --frompara copiar apenas os artefatos para um estágio final enxuto - Escolha imagens-base pequenas (slim/alpine) e instale apenas as dependências de produção
- Use
.dockerignorepara reduzir o contexto de compilação
Imagens menores são compiladas mais rapidamente, implantadas mais depressa e são mais seguras.
Perguntas Frequentes
A aula “Compilações em várias etapas e imagens menores” é grátis?
Sim — o texto completo de “Compilações em várias etapas e imagens menores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Compilações em várias etapas e imagens menores”?
Aprenda como os Dockerfiles em várias etapas permitem distribuir imagens enxutas para produção, separando as ferramentas de compilação do ambiente de execução final e reduzindo significativamente o t… Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Compilações em várias etapas e imagens menores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Entendendo os Dockerfiles
- Criação de Imagens Docker Personalizadas
- Camadas e Otimização de Imagens
- Compilações em várias etapas e imagens menores