docker image build
Introdução
O comando docker build
é usado para criar imagens Docker a partir de um conjunto de instruções definidas em um Dockerfile. O processo de build envolve a execução de comandos, a instalação de dependências, a cópia de arquivos, entre outros, para gerar uma imagem que encapsula um ambiente de execução específico.
Sintaxe Básica
PATH: Caminho para o diretório contendo o Dockerfile e o contexto de build.
URL: URL para um repositório Git que contém o Dockerfile e o contexto de build.
-: Lê o Dockerfile a partir do stdin.
Exemplo Básico
Este comando cria uma imagem chamada "minha-imagem" a partir do Dockerfile no diretório atual.
Opções Comuns
-t, --tag
-t, --tag
Define uma tag para a imagem criada. Pode ser usada várias vezes para aplicar múltiplas tags.
-f, --file
-f, --file
Especifica um Dockerfile diferente do padrão (Dockerfile
).
--no-cache
--no-cache
Constrói a imagem sem utilizar o cache das camadas anteriores. Isso força a reconstrução de todas as camadas.
--build-arg
--build-arg
Passa variáveis de ambiente (argumentos) para o Dockerfile.
No Dockerfile, você pode usar o argumento com a instrução ARG
:
--pull
--pull
Sempre tenta baixar a imagem base mais recente antes de construir.
--target
--target
Permite especificar uma build stage específica para criar uma imagem multi-stage.
-o, --output
-o, --output
Especifica a localização do output da construção. Útil para builds que produzem arquivos em vez de imagens Docker.
Conceitos Importantes
1. Contexto de Build
O contexto de build é o conjunto de arquivos e diretórios que o Docker precisa para construir a imagem. É enviado ao daemon Docker antes da construção.
Evite incluir arquivos desnecessários no contexto usando o
.dockerignore
.
2. Dockerfile
O Dockerfile define todas as etapas para construir a imagem. Cada instrução no Dockerfile (e.g.,
RUN
,COPY
,CMD
) cria uma nova camada na imagem.
3. Cache de Build
O Docker utiliza um cache para acelerar o processo de construção. Se as instruções do Dockerfile e os arquivos do contexto não mudaram, o Docker pode reutilizar camadas de imagens anteriores.
4. Multi-Stage Builds
Multi-stage builds permitem criar imagens mais enxutas, separando as etapas de build em diferentes estágios e copiando apenas os artefatos finais para a imagem final.
5. BuildKit
O BuildKit é um novo backend de construção para o Docker, que melhora o desempenho e adiciona novos recursos como a construção paralela. Para ativá-lo:
Melhores Práticas
Utilize .dockerignore: Exclua arquivos desnecessários do contexto de build para reduzir o tamanho e o tempo de construção.
Minimize a quantidade de camadas: Combine instruções
RUN
sempre que possível para minimizar o número de camadas.Especifique versões de imagens base: Use tags específicas (e.g.,
python:3.9-slim
) em vez delatest
para garantir builds reprodutíveis.Utilize Multi-Stage Builds: Reduza o tamanho da imagem final copiando apenas o que é necessário a partir de etapas de build intermediárias.
Depuração e Logs
Para depurar problemas durante o build, você pode usar a opção --progress
com o BuildKit para obter informações detalhadas:
E também visualizar os logs detalhados com a flag --no-cache
para forçar a reconstrução:
Conclusão
O comando docker build
é uma ferramenta essencial no desenvolvimento e deployment de aplicações Docker. Compreender suas opções e melhores práticas pode ajudar a criar imagens mais eficientes, seguras e reprodutíveis.
Last updated