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!