0Pricing
Docker & DevOps Fundamentals · Aula

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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Docker & DevOps Fundamentals 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 ci

Compilar 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 build

Um 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_modules

Dockerfile 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 ~ grande
  • node:20-slim ~ muito menor
  • node: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=dev

Usar .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
*.log

Medir 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 myapp

Verificaçã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 FROM em um único Dockerfile
  • Compile em um estágio inicial e depois use COPY --from para 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 .dockerignore para 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 Docker & DevOps Fundamentals, atualize para CoddyKit PRO. O curso de Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

Nenhuma experiência prévia é necessária. Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

Sim. Cada aula de Docker & DevOps Fundamentals 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

  1. Entendendo os Dockerfiles
  2. Criação de Imagens Docker Personalizadas
  3. Camadas e Otimização de Imagens
  4. Compilações em várias etapas e imagens menores
← Voltar para Docker & DevOps Fundamentals