Переменные окружения и файлы .env
Настраивайте службы Compose с помощью переменных окружения, подстановки переменных и файла .env, чтобы один файл Compose работал в средах разработки, тестирования и эксплуатации.
«Переменные окружения и файлы .env» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем выносить конфигурацию?
Жёстко заданные пароли и порты внутри файла Compose делают конфигурацию хрупкой и небезопасной. Переменные окружения позволяют менять поведение в разных средах без редактирования YAML.
- Храните секреты вне системы контроля версий
- Повторно используйте один файл Compose везде
- Переопределяйте значения во время выполнения
Ключ environment
Внутри службы объявите переменные под ключом environment в виде отображения. При запуске они передаются в контейнер.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secretФорма списка
Этот же ключ принимает список строк KEY=VALUE. Выберите форму, которая кажется Вам более понятной.
services:
db:
image: postgres:16
environment:
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secretФайл .env
Compose автоматически считывает файл с именем .env из каталога проекта. Один раз задайте значения в этом файле и ссылайтесь на них с помощью подстановки ${VAR}.
# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080Подстановка переменных
Используйте ${VAR} в любом месте файла Compose. Перед разбором файла Compose заменяет это выражение значением из .env или оболочки.
services:
db:
image: postgres:16
environment:
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASS}Значения по умолчанию
Задайте резервное значение с помощью ${VAR:-default}. Если переменная не задана или пуста, используется значение по умолчанию, благодаря чему стек работает и без полностью заполненного файла .env.
ports:
- "${WEB_PORT:-80}:80"Обязательные переменные
Используйте ${VAR:?message}, чтобы сделать переменную обязательной. Если переменная отсутствует, Compose прерывает выполнение и выводит Ваше сообщение, что позволяет заранее обнаружить неправильную конфигурацию.
environment:
API_KEY: ${API_KEY:?API_KEY must be set}Директива env_file
Чтобы передать в контейнер целый файл переменных (а не только использовать подстановку), применяйте env_file. Каждая строка становится переменной окружения контейнера.
services:
api:
image: myapi:1.0
env_file:
- api.envПравила приоритета
Когда переменная определена в нескольких местах, Compose применяет определённый порядок. Переменные окружения оболочки имеют приоритет над .env; явная запись environment: имеет приоритет над env_file.
- Оболочка / CLI
-eимеет наивысший приоритет - затем
environment: - затем
env_file - затем значения по умолчанию из образа
Проверка разрешённых значений
Выполните docker compose config, чтобы вывести полностью разрешённый файл Compose со всеми применёнными подстановками. Это отлично подходит для проверки того, что именно будет запущено.
docker compose configНе храните секреты в Git
Добавьте в репозиторий .env.example с заполнителями, а настоящий .env внесите в .gitignore. Для настоящих секретов в рабочей среде отдавайте предпочтение секретам Docker, а не переменным окружения.
# .gitignore
.envБыстрая проверка
Как работают значения по умолчанию при подстановке?
Итоги
Теперь Вы умеете аккуратно настраивать Compose с помощью данных окружения:
environment:передаёт переменные каждому сервису- Файл
.envобеспечивает подстановку${VAR} :-задаёт значения по умолчанию, а:?помечает обязательные значенияdocker compose configпоказывает разрешённый результат
Благодаря этому один файл Compose можно использовать в любой среде.
Часто задаваемые вопросы
Урок «Переменные окружения и файлы .env» бесплатный?
Да — полный текст урока «Переменные окружения и файлы .env» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Переменные окружения и файлы .env»?
Настраивайте службы Compose с помощью переменных окружения, подстановки переменных и файла .env, чтобы один файл Compose работал в средах разработки, тестирования и эксплуатации. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Переменные окружения и файлы .env»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое Docker Compose?
- Написание файла Compose
- Развёртывание приложений из нескольких сервисов
- Переменные окружения и файлы .env