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
- Configuração:
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.