Skip to main content

Configuração do Docker Compose

O arquivo compose.yml na pasta /app define toda a infraestrutura necessária para rodar a aplicação em containers Docker. A configuração atual possui três serviços principais:

Estrutura de Variáveis de Ambiente

O arquivo utiliza uma estrutura avançada de variáveis de ambiente com âncoras YAML para reutilização de configurações:

x-common:
database: &database-environment
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
backend: &backend-environment
GIN_MODE: ${GIN_MODE}
common: &common-environment
TZ: ${TIMEZONE}

Serviços

Database (PostgreSQL)

  • Imagem: postgres:17-alpine
  • Porta: 5432:5432
  • Volumes: Persistência dos dados em ./data/database
  • Healthcheck: Verificação de saúde a cada 10 segundos
  • Variáveis de Ambiente: Configuradas através do bloco database-environment

Caddy (Reverse Proxy)

  • Imagem: caddy:latest
  • Portas: 80:80 e 443:443 (HTTP e HTTPS)
  • Volumes:
    • Configuração: ./Caddyfile
    • Dados: ./data/caddy/data
    • Configurações automáticas: ./data/caddy/config

Backend

  • Build: Customizado via Dockerfile
  • Dependências: Aguarda a saúde do banco de dados
  • Variáveis de Ambiente: Combina configurações de backend, database e common
  • Argumentos de Build:
    • ARCH: Arquitetura do sistema
    • PORT: Porta do backend

Comunicação entre Serviços

Os serviços são interligados através da rede Docker interna, permitindo comunicação direta usando os nomes dos serviços como hostnames. Por exemplo, o backend se conecta ao banco de dados usando database como hostname.