04.09.2025

O que é um Dockerfile? Guia passo a passo para escrever um Dockerfile

Para simplificar tarefas de implantação e automação, muitos desenvolvedores recorrem ao Docker, baixando imagens prontas do DockerHub. Essas imagens economizam tempo, são altamente confiáveis, com taxa de sucesso de até 90%, e oferecem configuração simples. Mas e se nenhuma das imagens disponíveis atender às suas necessidades específicas? Ou se você quiser criar uma imagem Docker personalizada que automatize tarefas na sua máquina de forma eficiente?

Para isso existe o Dockerfile, que permite definir a ordem das ações e formar uma nova estrutura de sistema de arquivos em camadas. Vamos falar sobre tudo em detalhe ao longo deste artigo!

O que é um Dockerfile?

Dockerfile é um documento de texto que contém instruções para criar uma imagem, também conhecido como script. É o que permite automatizar a implantação de serviços e softwares. Sua função é aplicar mudanças ao sistema de arquivos padrão do SO e, depois disso, executá-lo em um ambiente isolado!

Captura de tela nº1 — Container

À esquerda você vê as camadas ou ações executadas no SO, e à direita os próprios arquivos do sistema, onde são aplicadas. O algoritmo consiste nos seguintes passos:

  1. Um Dockerfile é compilado, especificando as ações a serem realizadas;
  2. O usuário executa o comando do cliente Docker para construir a imagem: docker build;
  3. O daemon recebe a solicitação do cliente e inicia a construção da imagem com base em um SO mínimo;
  4. Uma vez criada, a imagem ou cópia do sistema de arquivos será enviada ao repositório pelo daemon;
  5. Quando o container for criado, ele será chamado e implantado em um ambiente isolado.

Imagine que precisamos criar nossa própria imagem de implantação de serviço de banco de dados, que será usada como servidor fora de um cluster.

Criando seu Dockerfile

Seguindo o algoritmo descrito, vamos detalhar todas as ações necessárias para o funcionamento do serviço. Por exemplo, o arquivo pode se parecer com isto:

Captura de tela nº2 - Dockefile

Você deve ter notado que a sintaxe usa palavras em maiúsculas para lidar com ações na máquina. Vamos analisar cada uma delas:

Atenção: o script é executado de forma sequencial. Isso significa que as ações até o comando USER serão executadas como root, e as demais conforme definidas. O mesmo vale para o diretório de trabalho.

De forma resumida, podemos dividir o script em três blocos:

  1. Ações de pré-instalação como root: instalação de softwares, criação de usuário e grupo, mudança para o novo usuário;
  2. Como usuário mysql, o download da chave pública EDS e configuração de repositórios;
  3. Instalação do software e abertura da porta da máquina para conexão.

Criando uma imagem chamada gg com o utilitário Docker:

sudo docker build -t gg .

A opção -t define o nome da futura imagem, e o ponto indica o diretório atual onde está o Dockerfile.

Captura de tela nº3 — Nova imagem

Após um breve processo, recebemos a resposta de que a imagem Docker foi gerada e está pronta para uso. Agora podemos enviá-la a um repositório ou criar containers a partir dela:

sudo docker run -d -it gg && sudo docker ps

Captura de tela nº4 — Novo container

Como vemos, o container da imagem foi criado com sucesso, com a porta encaminhada e o comando de inicialização executado.

Mas há outra forma de criar o container de imediato: usar o Docker Compose, a ferramenta de orquestração de containers. No arquivo de configuração podemos definir que a imagem deve ser criada primeiro e depois o container executado.

Esse método resolve o problema de configuração. Nem todos os serviços podem ser configurados apenas com Docker Compose, então às vezes é necessário configurar manualmente e depois gerar a imagem. Criando o arquivo docker-compose.yml:

sudo nano docker-compose.yml

Dentro do arquivo:

version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: my_app_container
ports:
- "3306:3306"
environment:
- ENV_VAR=value
tty: true
stdin_open: true
restart: always

Captura de tela nº5 — Docker-compose

O item build permite definir o diretório onde está o Dockerfile e seu nome. Em seguida, configuramos o container: portas, nome, variáveis de ambiente etc. Iniciamos com:

sudo docker-compose up -d

Captura de tela nº6 — Iniciar container

O resultado é um serviço em funcionamento em ambiente virtualizado, descrito em poucas linhas. Em resumo: Dockerfile serve para criar a imagem, enquanto Docker Compose para configurar e executar o container. Esses dois arquivos reduzem o processo de implantação a apenas dois comandos.

Se você não tiver recursos suficientes, pode executar tudo em servidores na nuvem. A Serverspace fornece servidores VPS isolados para uso dedicado e virtualizado.

Captura de tela nº7 — Criar servidor

Conclusão

Dockerfiles são ferramentas essenciais para automatizar a criação de imagens Docker personalizadas, permitindo definir a sequência exata de etapas necessárias para construir um ambiente consistente e reproduzível. Comandos como FROM, RUN, COPY, CMD e ENV ajudam a criar imagens adaptadas às suas necessidades. Já o Docker Compose simplifica a configuração e orquestração de containers, permitindo lançar serviços complexos de forma rápida e confiável.

FAQ

  1. Q1: O que é um Dockerfile?
    Um Dockerfile é um arquivo de texto com instruções que definem como construir uma imagem Docker. Ele automatiza a criação de ambientes para aplicações.
  2. Q2: Por que usar um Dockerfile em vez de imagens prontas?
    Imagens prontas economizam tempo, mas o Dockerfile permite personalizar a imagem, instalar dependências específicas e garantir consistência em qualquer ambiente.
  3. Q3: Quais são os principais comandos de um Dockerfile?
    • FROM — especifica a imagem base;
    • RUN — executa comandos no processo de build;
    • COPY — copia arquivos do host para o container;
    • CMD — define o comando padrão ao iniciar o container;
    • ENV — define variáveis de ambiente;
    • WORKDIR — define o diretório de trabalho no container;
    • USER — troca o usuário que executa comandos.
  4. Q4: Como criar uma imagem a partir de um Dockerfile?
    Use:
    docker build -t nome_imagem .
  5. Q5: Qual a relação entre Docker Compose e Dockerfile?
    O Dockerfile constrói a imagem, enquanto o Docker Compose configura como os containers vão rodar (portas, variáveis, dependências).
  6. Q6: Posso usar Dockerfiles em implantações na nuvem?
    Sim! Dockerfiles são ideais para cloud. Depois de criada, a imagem pode ser enviada para um registro e executada em servidores na nuvem, VPS ou plataformas de orquestração.
  7. Q7: Como atualizar uma imagem Docker existente?
    Basta modificar o Dockerfile e reconstruir a imagem com docker build -t nome_imagem .. Containers antigos precisam ser recriados a partir da nova imagem.