Evite colocar dados sensíveis no Docker Compose
Esse arquivo é comumente versionado e compartilhado, você pode acabar expondo acidentalmente chaves e senhas e isso tudo acabar parando em um repositório público.
Além do problema de segurança, há uma camada de bagunça, pois em cada ambiente(desenvolvimento, testes e produção) você teria que ter um docker-compose.yml diferente ao invés de usar o mesmo e só definir as variáveis de ambiente no seu .env
Então eu devo colocar onde?
Coloque em um arquivo .env e coloque o .env em um .gitinore para não ser “commitado” junto do projeto. Para fazer a referência, utiliza o ${}
Eu mostro:
version: '3.8'
services:
# Serviço de banco de dados falso
fake-db:
image: postgres:13
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_DATABASE}
ports:
- "5432:5432"
networks:
- fake-network
No arquivo .env você faz assim:
DB_USER=usuarioAqui
DB_PASSWORD=senhaAqui
DB_DATABASE=nomeDoBancoDeDadosAqui
É uma boa prática utilizar variáveis de ambiente e espero que leve em consideração para colocar mais uma camada de segurança no seu projeto.