0Pricing
Go Academy · Aula

Docker Compose para desenvolvimento local

Conecte um serviço Go ao PostgreSQL e ao Redis

Docker Compose para desenvolvimento local é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Por que usar Docker Compose?

O Docker Compose orquestra vários contêineres (aplicação, banco de dados, cache e agente de mensagens) para o desenvolvimento local, reproduzindo um ambiente semelhante ao de produção sem a configuração manual dos serviços.

Estrutura de docker-compose.yml

Defina serviços, redes e volumes em um arquivo YAML:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Recarregamento automático com Air

Use github.com/air-verse/air para recarregar automaticamente a aplicação durante o desenvolvimento. Monte o código-fonte no contêiner e execute air em vez do binário:

app:
  volumes:
    - .:/app
  command: air

Verificações de integridade

Defina verificações de integridade para que depends_on aguarde até que o banco de dados esteja realmente pronto, e não apenas iniciado:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Substituições para o ambiente

Use docker-compose.override.yml (mesclado automaticamente) para configurações exclusivas do ambiente local, mantendo o arquivo base limpo para a CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Redes nomeadas

Coloque os serviços em uma rede personalizada compartilhada para permitir a descoberta de serviços baseada em DNS pelo nome do serviço:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Arquivos de ambiente

Use a chave env_file para carregar arquivos .env no contêiner, mantendo os segredos fora do YAML:

app:
  env_file: .env.local

Execução de comandos

Comandos comuns do Compose:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

População inicial do banco de dados

Monte arquivos SQL de população inicial no diretório /docker-entrypoint-initdb.d da imagem do postgres — eles serão executados na primeira criação do contêiner:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Perfis

Use perfis do Compose para iniciar serviços opcionais (por exemplo, uma pilha de monitoramento) somente quando necessário:

services:
  grafana:
    profiles: ["monitoring"]

Compose na CI

Execute testes de integração em serviços reais na CI com o Compose. O GitHub Actions oferece suporte nativo ao Docker Compose; use verificações de integridade para aguardar até que os serviços estejam prontos.

Verificação rápida

Como garantir que o contêiner da aplicação aguarde até que o banco de dados esteja pronto no Docker Compose?

Recapitulação: Docker Compose

Pontos principais:

  • docker-compose.yml define todos os serviços, redes e volumes
  • depends_on + healthcheck para a prontidão dos serviços
  • Arquivos de substituição para configurações do desenvolvimento local; env_file para segredos
  • Air para recarregamento automático; monte o código-fonte como um volume

Perguntas Frequentes

A aula “Docker Compose para desenvolvimento local” é grátis?

Sim — o texto completo de “Docker Compose para desenvolvimento local” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Docker Compose para desenvolvimento local”?

Conecte um serviço Go ao PostgreSQL e ao Redis Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Docker Compose para desenvolvimento local”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Builds Docker em várias etapas para Go
  2. Configuração de ambiente e secrets
  3. Docker Compose para desenvolvimento local
  4. Verificações de saúde e ajustes para produção
← Voltar para Go Academy