| name | docker-compose-security |
| description | Regras rígidas de segurança para Docker Compose - NUNCA expor variáveis de ambiente |
| triggers | ["docker-compose","docker","compose","container","env","environment","variables"] |
Docker Compose - Regras de Segurança
REGRAS RÍGIDAS E OBRIGATÓRIAS para Docker Compose.
Regra de Ouro: NUNCA Expor Variáveis
❌ PROIBIDO (INADMISSÍVEL)
services:
app:
environment:
- SERVER_TYPE=http
- SERVER_PORT=8080
- AUTHENTICATION_TYPE=apikey
- AUTHENTICATION_API_KEY=${EVOLUTION_API_KEY:-ChangeMeToSecureKey123!}
- DATABASE_ENABLED=true
- DATABASE_PROVIDER=postgresql
- DATABASE_CONNECTION_URI=${EVOLUTION_DATABASE_URI:-postgresql://user:password@127.0.0.1:5433/db}
NUNCA, JAMAIS, EM HIPÓTESE ALGUMA:
- ❌ Expor senhas no docker-compose.yml
- ❌ Expor usuários no docker-compose.yml
- ❌ Expor tokens/API keys no docker-compose.yml
- ❌ Expor URIs de conexão com credenciais no docker-compose.yml
- ❌ Expor configurações sensíveis no docker-compose.yml
- ❌ Usar valores padrão inseguros (ex:
ChangeMeToSecureKey123!)
✅ CORRETO (OBRIGATÓRIO)
services:
app:
env_file:
- .env.app
- .env.database
environment:
- NODE_ENV=production
- LOG_LEVEL=info
SEMPRE:
- ✅ Usar
env_file: para todas as variáveis sensíveis
- ✅ Criar arquivos
.env.* separados por serviço
- ✅ Adicionar
.env.* ao .gitignore
- ✅ Criar
.env.example com placeholders
- ✅ Documentar variáveis necessárias no README
Estrutura de Arquivos .env
project/
├── docker-compose.yml # SEM variáveis sensíveis
├── .env.example # Template com placeholders
├── .env.app # Variáveis da aplicação (gitignored)
├── .env.database # Credenciais do banco (gitignored)
├── .env.redis # Credenciais do Redis (gitignored)
└── .gitignore # Deve incluir .env.*
.env.example (Template Público)
SERVER_TYPE=http
SERVER_PORT=8080
AUTHENTICATION_TYPE=apikey
AUTHENTICATION_API_KEY=your_api_key_here
DATABASE_ENABLED=true
DATABASE_PROVIDER=postgresql
DATABASE_CONNECTION_URI=postgresql://user:password@host:port/database
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password_here
.env.app (Gitignored)
SERVER_TYPE=http
SERVER_PORT=8080
AUTHENTICATION_TYPE=apikey
AUTHENTICATION_API_KEY=sk_live_abc123xyz789
Validação Obrigatória
Antes de commitar docker-compose.yml:
- Verificar se há variáveis sensíveis em
environment:
- Verificar se
env_file: está configurado
- Verificar se
.env.* está no .gitignore
- Verificar se
.env.example existe com placeholders
Script de validação:
grep -E "(password|secret|key|token|uri|connection)" docker-compose.yml | grep -v "env_file"
Se encontrar algo, ERRO CRÍTICO - não commitar!
Checklist