запускаю docker run <имя только что сбилженного image> и он запускается с переменными окружения не из .env.dev, а из .env. Почему так?
а я что делаю?
ты когда стартуешь с образа просто docker-compose run пишешь же?
what? где я там про docker up писал?)))
настройки - имеется ввиду .env файл? Тогда зачем компоуз, если можно docker run с опцией --env-file? И опять же, в образе уже, почему-то содержатся переменные из .env(обычно его используют для прода). То есть, когда я запускаю docker run <image> автоматом запускается контейнер с настройками из .env. То есть, я по умолчанию свечу настройки на весь интернет, причем продовые.
docker run не подтягивает переменных из .env файла, если явно не указать аргумент --env-file
https://t.me/docker_ru/396893
Разве? Называешь меня лжецом?))) https://t.me/docker_ru/396893
.env файл не используется для подстановки переменных при сборке образа, только при запуске приложения
Кто-то используе пакет dotenv
Да, использует)) И что?))
То, что это не докер подставляет переменные из .env. Это .env зашивается в образ, и приложение его читает при запуске
Читает откуда? Я docker run вообще из другой директории запускал, на скрине видно. Даже на сервере запускал. На сервере то и в помине нет никакого .env файла.
У тебя в Dockerfile написано: COPY . . Все содержимое папки, где собирается образ, попадает в него, за исключением путей, указанных в .dockerignore. Если посмотреть в docker inspect образа, то своих переменных ты там не увидишь
О, спасибо за наводку. Добавил .env в .dockerignore. Теперь при запуске образа ругается валидация на отсутствие переменных. То что надо, в целом. Является ли это "православным" решением? Или можно решить этот вопрос поэлегантнее?
Максим тебе уже объяснил, что при билде .env не используется просто так, можно через аргументы конечно...
Обсуждают сегодня