FROM
No Dockerfile, a instrução FROM é uma das mais importantes e obrigatórias. Ela define a imagem base a partir da qual o restante da imagem Docker será construída. Aqui está um detalhamento sobre como a instrução FROM funciona:
Sintaxe Básica
FROM <imagem-base>[:<tag>] [AS <alias>]<imagem-base>: Define a imagem base que será usada para construir a nova imagem. Esta imagem pode estar disponível no Docker Hub ou em um registro privado.<tag>: Opcionalmente, você pode especificar uma tag para a imagem base. Se nenhuma tag for especificada, a taglatestserá utilizada por padrão.[AS <alias>]: Também opcional, permite dar um nome (alias) ao estágio de construção, o que é útil em ambientes de múltiplos estágios.
Exemplo Simples
FROM ubuntu:20.04Neste exemplo, o Dockerfile utiliza a imagem ubuntu com a tag 20.04 como base.
Imagens Multistage
Em cenários onde você deseja otimizar a imagem final (por exemplo, removendo arquivos temporários ou compilações intermediárias), você pode usar imagens de múltiplos estágios:
FROM golang:1.19 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]Neste exemplo:
O primeiro estágio, chamado
builder, utiliza uma imagem do Golang para compilar uma aplicação.O segundo estágio usa uma imagem
alpine, e apenas o binário final é copiado para essa imagem, resultando em uma imagem Docker muito menor e otimizada para produção.
Utilização de FROM scratch
FROM scratchEm alguns casos, especialmente quando você deseja criar uma imagem muito leve, você pode usar scratch como a imagem base. scratch é uma imagem vazia, útil para criar imagens minimalistas.
Este exemplo seria típico para aplicações Go ou C que não dependem de bibliotecas externas.
Considerações
A escolha da imagem base impacta diretamente o tamanho da imagem final e as dependências disponíveis.
Sempre use imagens oficiais e seguras como base, e considere especificar uma tag para garantir que a construção seja previsível.
Essa explicação cobre o essencial sobre a instrução FROM no Dockerfile.
Last updated