Документ описывает процесс нормализации переменных окружения для единообразного запуска всех сервисов через Docker Compose.
- Каждый сервис имеет свой
env.exampleс разными форматами - Нет единого источника правды для всех переменных
- Дублирование переменных между сервисами
- В локальной разработке используются
localhost - В Docker Compose нужно использовать имена сервисов
- Нет четкого разделения между локальным и Docker окружением
- Нет единого
.envфайла в корне проекта - Сложно управлять зависимостями между сервисами
- Нет документации по обязательным/опциональным переменным
Файл: env.docker.example (в корне проекта)
Этот файл содержит:
- Все переменные для всех сервисов
- Разделение на Docker и локальные URL
- Группировку по сервисам
- Комментарии с пояснениями
- Без суффикса: для использования внутри Docker сети (имена сервисов)
_LOCAL: для использования с хоста (localhost)
Пример:
# Внутри Docker сети
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/experiment_db
# С хоста (для локальной разработки)
DATABASE_URL_LOCAL=postgresql://postgres:postgres@localhost:5432/experiment_dbPOSTGRES_*- настройки PostgreSQLEXPERIMENT_SERVICE_*- настройки Experiment ServiceAUTH_PROXY_*- настройки Auth ProxyVITE_*- переменные для Vite (Experiment Portal)
- Скопируйте файл:
cp env.docker.example .env-
При необходимости измените значения в
.env -
Docker Compose автоматически загрузит переменные из
.env
Используйте переменные с суффиксом _LOCAL или настройте каждый сервис отдельно через его env.example.
| Переменная в env.docker.example | Переменная в experiment-service | Описание |
|---|---|---|
DATABASE_URL |
DATABASE_URL |
URL подключения к PostgreSQL |
EXPERIMENT_SERVICE_PORT |
PORT |
Порт сервиса |
AUTH_SERVICE_URL |
AUTH_SERVICE_URL |
URL Auth Service |
RABBITMQ_URL |
RABBITMQ_URL |
URL RabbitMQ |
TELEMETRY_BROKER_URL |
TELEMETRY_BROKER_URL |
URL Redis |
| Переменная в env.docker.example | Переменная в auth-proxy | Описание |
|---|---|---|
AUTH_PROXY_PORT |
PORT |
Порт прокси |
TARGET_EXPERIMENT_URL |
TARGET_EXPERIMENT_URL |
URL Experiment Service |
AUTH_URL |
AUTH_URL |
URL Auth Service |
CORS_ORIGINS |
CORS_ORIGINS |
Разрешенные origins |
| Переменная в env.docker.example | Использование | Описание |
|---|---|---|
VITE_API_URL |
Vite env variable | URL API для фронтенда |
- ✅ Создан
env.docker.exampleс единой конфигурацией - ⏳ Обновить
docker-compose.ymlдля использования переменных из.env - ⏳ Обновить Dockerfile'ы для поддержки переменных окружения
- ⏳ Создать скрипты для автоматической генерации env файлов для каждого сервиса
POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DBDATABASE_URLEXPERIMENT_SERVICE_PORTAUTH_PROXY_PORT
RABBITMQ_URL- не используется активноTELEMETRY_BROKER_URL- не используется активноOTEL_EXPORTER_ENDPOINT- для мониторингаAUTH_SERVICE_URL- можно использовать заглушки
⚠️ НЕ коммитьте.envфайл в Git- ✅ Используйте
.env.exampleилиenv.docker.exampleкак шаблон - ✅ Для production используйте секреты Docker или внешние системы управления секретами