Learn Docker Help

Dockerfile Commands: Guia Definitivo 🛠️

╔═══════════════════════════════════════════════════════════╗ ║ DOCKERFILE COMMAND REFERENCE ║ ║ ║ ║ FROM │ ARG │ ENV │ WORKDIR │ COPY │ ADD │ RUN │ CMD ║ ║ ║ ║ ENTRYPOINT │ EXPOSE │ VOLUME │ USER │ LABEL │ ONBUILD ║ ╚═══════════════════════════════════════════════════════════╝

Comandos Base 📝

FROM

# Sintaxe básica FROM <imagem> FROM <imagem>:<tag> FROM <imagem>@<digest> # Exemplos FROM ubuntu:22.04 FROM node:18-alpine FROM golang:1.19@sha256:8f2b0...

ARG

# Sintaxe básica ARG <nome>[=<default>] # Exemplos ARG VERSION=1.0.0 ARG BUILD_DATE ARG GITHUB_TOKEN # Sensível - usar com --build-arg # Escopo especial ARG BASE_IMAGE=ubuntu:22.04 FROM ${BASE_IMAGE}

ENV

# Sintaxe básica ENV <key>=<value> ENV <key> <value> # Exemplos ENV NODE_ENV=production ENV PORT=3000 \ HOST=0.0.0.0 \ APP_NAME="Docker App"

WORKDIR

# Sintaxe básica WORKDIR /path/to/dir # Exemplos WORKDIR /app WORKDIR $HOME/app WORKDIR src # Relativo ao WORKDIR anterior

Comandos de Conteúdo 📦

COPY

# Sintaxe básica COPY <src> <dest> COPY ["<src>",... "<dest>"] # Exemplos COPY . . COPY package*.json ./ COPY --chown=node:node . . COPY --from=builder /app/dist ./public

ADD

# Sintaxe básica ADD <src> <dest> ADD ["<src>",... "<dest>"] # Exemplos ADD https://example.com/file.tar.gz /tmp/ ADD source.tar.gz /usr/local/ ADD --chown=user:group files* /app/

Comandos de Execução 🚀

RUN

# Sintaxe shell RUN <comando> # Sintaxe exec RUN ["executável", "param1", "param2"] # Exemplos práticos RUN apt-get update && \ apt-get install -y \ curl \ nginx \ && rm -rf /var/lib/apt/lists/* RUN --mount=type=cache,target=/var/cache/apt \ apt-get update && apt-get install -y python3 RUN --mount=type=secret,id=ssh,target=/root/.ssh/id_rsa \ git clone git@github.com:org/repo.git

CMD

# Sintaxe básica CMD ["executável", "param1", "param2"] # exec form (preferida) CMD comando param1 param2 # shell form CMD ["param1", "param2"] # como parâmetros para ENTRYPOINT # Exemplos CMD ["nginx", "-g", "daemon off;"] CMD ["python3", "app.py"] CMD ["--port", "8080"] # com ENTRYPOINT

ENTRYPOINT

# Sintaxe básica ENTRYPOINT ["executável", "param1"] # exec form (preferida) ENTRYPOINT comando param1 # shell form # Exemplos ENTRYPOINT ["nginx", "-g", "daemon off;"] ENTRYPOINT ["/docker-entrypoint.sh"] ENTRYPOINT ["python3"]

Comandos de Configuração ⚙️

EXPOSE

# Sintaxe básica EXPOSE <port> [<port>/<protocol>...] # Exemplos EXPOSE 80 EXPOSE 80/tcp 443/tcp EXPOSE 53/udp

VOLUME

# Sintaxe básica VOLUME ["/data"] VOLUME /data /logs /temp # Exemplos VOLUME ["/var/log"] VOLUME ["/var/www", "/var/log/nginx"] VOLUME /mnt/data

USER

# Sintaxe básica USER <user>[:<group>] USER <UID>[:<GID>] # Exemplos USER node USER node:node USER 1000:1000

LABEL

# Sintaxe básica LABEL <key>=<value> # Exemplos LABEL version="1.0.0" LABEL maintainer="dev@example.com" \ description="Nginx server" \ vendor="ACME Corp"

Comandos Avançados 🔧

HEALTHCHECK

# Sintaxe básica HEALTHCHECK [OPTIONS] CMD comando # Exemplos HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost/ || exit 1 HEALTHCHECK --start-period=5s \ CMD wget -q --spider http://localhost:3000/health || exit 1 # Desabilitar healthcheck HEALTHCHECK NONE

SHELL

# Sintaxe básica SHELL ["executável", "parâmetros"] # Exemplos SHELL ["/bin/bash", "-c"] SHELL ["powershell", "-command"]

ONBUILD

# Sintaxe básica ONBUILD <INSTRUÇÃO> # Exemplos ONBUILD COPY . /app/src ONBUILD RUN /usr/local/bin/python-build

STOPSIGNAL

# Sintaxe básica STOPSIGNAL signal # Exemplos STOPSIGNAL SIGTERM STOPSIGNAL 9

Padrões e Truques 🎯

Multi-stage Builds

# Build stage FROM golang:1.19 AS builder WORKDIR /app COPY . . RUN go build -o main # Final stage FROM alpine:3.18 COPY --from=builder /app/main /usr/local/bin/ ENTRYPOINT ["main"]

Build Cache

# Cache de dependências COPY go.mod go.sum ./ RUN go mod download # Cache de build RUN --mount=type=cache,target=/root/.cache/go-build \ go build -o app

Args e Env Combinados

# Build-time config ARG NODE_ENV ENV NODE_ENV=${NODE_ENV:-production} # Runtime config ARG CONFIG_FILE=config.json COPY ${CONFIG_FILE} /etc/app/config.json

Waifu Command Tips 💡

Matriz de Compatibilidade 📊

Comando

Múltiplos por Dockerfile

Sobrescrito por Args

Persiste na Imagem

FROM

✅ (multi-stage)

-

ARG

ENV

COPY

✅ (src/dest)

RUN

CMD

❌ (último vale)

Checkpoint ✅

Você agora domina:

  • [x] Todos os comandos básicos do Dockerfile

  • [x] Sintaxe e opções de cada comando

  • [x] Casos de uso e exemplos práticos

  • [x] Padrões avançados e truques

  • [x] Boas práticas para cada comando

  • [x] Compatibilidade e limitações

Próximos Passos 🎯

  1. Dockerfile Examples

  2. Best Practices

  3. Advanced Patterns

Recursos Adicionais 📚

16 abril 2025