Introdução
Um Multi-stage build no Docker é uma técnica que permite construir imagens Docker mais eficientes e otimizadas. Ele funciona ao dividir o processo de construção em várias etapas, onde apenas os artefatos necessários são copiados para a imagem final. Isso reduz o tamanho da imagem e melhora a segurança, pois remove as partes desnecessárias usadas durante a construção, como ferramentas de compilação.
Benefícios do Multi-stage Build
Redução do Tamanho da Imagem: Apenas os arquivos necessários são incluídos na imagem final.
Melhor Segurança: Ferramentas de desenvolvimento e outros componentes não são incluídos na imagem final.
Facilidade de Manutenção: O Dockerfile permanece limpo e modular, facilitando a leitura e a manutenção.
Exemplo de Multi-stage Build
Vamos considerar um exemplo simples de uma aplicação Go. No primeiro estágio, compilamos a aplicação. No segundo estágio, copiamos apenas o binário compilado para a imagem final.
Dockerfile com Multi-stage Build
Como Funciona
Primeiro Estágio (
build
):Usa uma imagem do Golang para compilar a aplicação.
Copia o código-fonte para o diretório de trabalho
/app
e compila a aplicação.O resultado é um binário chamado
myapp
.
Segundo Estágio (Imagem Final):
Usa uma imagem base minimalista (
alpine
).Copia apenas o binário compilado do primeiro estágio para a imagem final.
Define o comando para executar o binário quando o container é iniciado.
Construção da Imagem
Para construir a imagem com o Dockerfile acima:
Verificação
Para verificar o tamanho da imagem e garantir que apenas o necessário foi incluído:
Isso demonstra como o Multi-stage build permite criar imagens Docker menores e mais seguras, removendo as partes não necessárias do processo de construção. Essa técnica é particularmente útil para aplicações que exigem um processo de compilação complexo ou múltiplas dependências.
Laboratório
Tipos de Linguagens:
Interpretadas
Compiladas
Interpretadas e Compiladas
Linguagem Interpretada
Linguagem Compilada
Linguagem Compilada e Interpretada (Híbrida)
Frontend
Last updated