Контекст: docker-compose.yml содержал хардкоженные пароли (photoplaces_dev) и JWT-секреты. Это безопасно только для локальной разработки, но легко приводит к утечкам через Git.
Суть: Все чувствительные значения выносятся в переменные с дефолтами для dev:
services:
postgres:
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-photoplaces_dev}
redis:
command: redis-server --requirepass ${REDIS_PASSWORD:-photoplaces_dev}
backend:
environment:
JWT_SECRET: ${JWT_SECRET:-dev-secret}
DATABASE_URL: postgres://user:${POSTGRES_PASSWORD:-photoplaces_dev}@postgres/db
Правила:
${VAR:-default} — прозрачный fallback.env файле для dev переопределяй только то, что нужно--env-file или secrets.env с реальными секретамиЗащита от утечек:
.gitignore должен содержать *.env (кроме .env.example)_FILE suffix (уже реализовано в config.go)deploy/env.prod — только заглушки CHANGE_MEСвязанные заметки: [[deploy-production-readiness]], [[backend-auth-security]] Источник: Code review docker-compose.yml
#docker #devops #security #best-practice