Oii, Bruno.
Vamos lá para as suas dúvidas:
O que é um Dockerfile?
Um Dockerfile é um arquivo de texto que contém instruções que o Docker usa para construir uma imagem.
Ele funciona como uma “receita”: cada linha do arquivo descreve um passo para criar a imagem final (como escolher a base, copiar arquivos, instalar pacotes, configurar o diretório de trabalho, definir variáveis de ambiente, etc.).
Pra que serve o Dockerfile?
Ele serve para automatizar a criação de imagens.
Ao invés de você instalar manualmente dependências toda vez, o Dockerfile registra esse passo a passo. Assim, qualquer pessoa (ou pipeline de CI/CD) pode rodar docker build e gerar a imagem do mesmo jeito.
A sintaxe do Dockerfile:
Sim, existe uma sintaxe própria, simples, que está documentada na documentação oficial do Docker.
Alguns comandos básicos que você já viu:
FROM define a imagem base (ex.: FROM ubuntu:20.04)WORKDIR define o diretório de trabalho no containerCOPY ou ADD copia arquivos do host para dentro da imagemRUN executa comandos durante a construção da imagemENTRYPOINT ou CMD define o processo que será executado quando o container rodar
Como funciona o docker build?
O comando docker build -t nome-da-imagem:tag .:
- Lê o Dockerfile que está no diretório atual (
.). - Executa as instruções passo a passo (como se fosse um script).
- Cria uma imagem nova, que depois pode ser usada com
docker run.
Exemplo simplificado:
docker build -t meuapp:1.0 .
Vai gerar a imagem meuapp na versão 1.0.
Quais informações sempre existirão em um Dockerfile?
Depende do projeto, mas normalmente sempre terá:
- FROM imagem base;
- WORKDIR diretório de trabalho;
- COPY / ADD copiar os arquivos do projeto;
- RUN instalar dependências;
- CMD ou ENTRYPOINT comando que mantém o container em execução.
Preciso sempre baixar imagens de terceiros do Docker Hub?
Não necessariamente.
Você pode:
- Criar uma imagem do zero (muito trabalhoso, usando
FROM scratch). - Ou usar uma imagem oficial já pronta (ex.:
FROM node:14, FROM php:8.1, FROM ubuntu:20.04).
Na prática, quase sempre você reaproveita imagens oficiais (porque são otimizadas e já vêm com pacotes configurados).
E aqui tem um tutorial de Como criar uma imagem Docker do Laravel, é trabalhoso mas com paciência e cuidado é possível fazer.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!