O que é Dockerfile

Alternativa mais adequada ao Docker Commit

Introdução

Um Dockerfile é um arquivo de texto que contém um conjunto de instruções para a criação de uma imagem Docker. Ele define como o contêiner deve ser configurado, quais pacotes e dependências devem ser instalados e qual aplicação deve ser executada quando o contêiner for iniciado.

Estrutura Básica do Dockerfile

Um Dockerfile é composto por uma série de instruções, cada uma especificando uma tarefa a ser realizada. As principais instruções incluem:

  • FROM: Define a imagem base.

  • RUN: Executa comandos durante a construção da imagem.

  • COPY ou ADD: Copia arquivos do sistema local para o contêiner.

  • CMD: Define o comando padrão a ser executado no contêiner.

  • EXPOSE: Informa as portas que o contêiner usará.

  • ENV: Define variáveis de ambiente.

  • WORKDIR: Define o diretório de trabalho.

Instruções do Dockerfile

FROM

A instrução FROM especifica a imagem base a partir da qual a nova imagem será construída. É a primeira linha em qualquer Dockerfile. Exemplos comuns de imagens base incluem ubuntu, alpine, node, etc.

RUN

A instrução RUN é usada para executar comandos na imagem durante o processo de construção. Isso pode incluir a instalação de pacotes, configuração de software, entre outros.

COPY

A instrução COPY copia arquivos ou diretórios do sistema de arquivos local para o sistema de arquivos do contêiner.

CMD

A instrução CMD define o comando padrão que será executado quando um contêiner for iniciado a partir da imagem. Pode ser sobrescrito ao iniciar o contêiner.

EXPOSE

A instrução EXPOSE documenta a porta na qual a aplicação dentro do contêiner estará escutando. Isso não publica a porta, mas é uma indicação para outros desenvolvedores.

ENV

A instrução ENV define variáveis de ambiente que estarão disponíveis no contêiner.

WORKDIR

A instrução WORKDIR define o diretório de trabalho para qualquer instrução subsequente.

Exemplo Completo de um Dockerfile

Melhores Práticas para Escrever Dockerfiles

  1. Minimize o número de camadas: Combine comandos RUN quando possível para criar menos camadas na imagem.

  2. Utilize imagens base menores: Prefira imagens base mais enxutas como alpine para reduzir o tamanho da imagem final.

  3. Evite usar ADD quando COPY for suficiente: A instrução ADD tem funcionalidades adicionais que podem não ser necessárias e adicionar complexidade.

Conclusão

O Dockerfile é uma ferramenta poderosa para automatizar e padronizar o processo de construção de imagens Docker. Compreender suas instruções e melhores práticas é essencial para criar contêineres eficientes e seguros.

Last updated