🛠️ Переменная есть в Docker Compose, но приложение её не видит?

Проверьте, о каком механизме идёт речь.

Подстановка в Compose-файл:

services: app: environment: APP_MODE: ${APP_MODE}

Значение может поступить из оболочки, файла .env или файла, указанного через --env-file.

Посмотреть итоговую конфигурацию можно командой:

docker compose config

Она показывает модель после объединения файлов и подстановки переменных. Перед публикацией вывода проверьте, нет ли в нём секретов.

env_file внутри описания сервиса — другой механизм: он передаёт переменные в контейнер.

ARG также не решает эту задачу автоматически. Он предназначен для этапа сборки и сам по себе не становится переменной окружения запущенного контейнера. Секреты через ARG и ENV передавать не следует.

Проверка работающего контейнера:

docker compose exec app printenv APP_MODE

Здесь сервис называется app.

Команда запускает новый процесс внутри контейнера. Она показывает его окружение, но не подтверждает, что основное приложение прочитало и применило значение. В минимальном образе утилита printenv также может отсутствовать.

Если конфигурация изменилась, а контейнер не был пересоздан, он может продолжать работать со старым окружением.

Для docker stack deploy правила подстановки .env нужно проверять отдельно.

Сохраните эту последовательность диагностики.

😄VK | 💬Макс | 🌐 Cайт 🔹🔹🔹🔹

🛠️ Переменная есть в Docker Compose, но приложение её не видит?
Проверьте, о каком механизме идёт речь | Сетка — социальная сеть от hh.ru