. env все переменные что бы прокидывать в Dockerfile?
Нет
У меня как то получается что то что в.env лежит крузиться в глобальные переменные и затем используются в docker-compose.yml... Это когда разварачиваю с gitlab на удалённом сервере предварительно сгенерировав.env с переменными спущенными из gitlab. А вот локально так не работает. Вот и думаю почему?
Показывай docker-compose.yml и Dockerfile
https://gist.github.com/evgeniy123/9e0af0e1978ace980d56f09782df3ecf
1. Переменные окружения с хоста в контейнер не передаются. Разве что ты явно это делаешь 2. Ты передаешь в args переменные USER и PASSWORD. Чтобы их использовать, нужно как минимум объявить их в Dockerfile с помощью директивы ARG: ARG USER RUN mycmd $USER 3. Если ты хочешь, чтобы значение переменной было доступно не только на этапе сборки, но и при запуске, делай так: ARG USER ENV USER $USER И тогда оно попадет в переменную окружения в контейнере, которая будет доступна на момент запуска ПП од тем же именем. 4. Последний способ нельзя использовать с секретами
То есть нельзя передавать переменные из файла .env в docker-compose как я делаю ?
Ты так и не описал зачем ты это делаешь. Тебе они при сборке вообще не сдались, так зачем ты пытаешься их передать?
как это не здались ? А пароль задавать на разные сервера ? mysql, rabbitmq .. Приложил файл чтобы было понятно зачем так делаю
В образе их быть не должно
а как мне создать базу данных с паролем ? Hardcode ?
Передавай через переменные окружения в контейнер. Не в образ
Не понял. как пароль передавать при создании бази даних ? Порядок опиши как ты видишь
В переменные окружения при запуске контейнера. Скрипт из entrypoint их прочитает и создаст базу с нужными параметрами
я не понял все равно ... Где эти переменные должны быть записаны, описаны. Создавать свои сборщик для базы данных и там все делать или в docker-compose ?
Сначала подтяни основы по докеру https://docs.docker.com/get-started/
вы смеетесь ? я понял 3 строчки написать нужно чтобы понять ваши слова. Ладно пошел пробывать
Я уже дал ответ на вопрос. Если есть проблемы с пониманием того, что значит "переменные окружения", "контейнер", "entrypoint", то сначала нужно понять основы работы докера, иначе ничего дельного из этого не выйдет
я понимаю все это но не могу понять как мне передать значения переменных из .env -> docker-compose
и это читал. По умолчанию .env. Так почему он тогда не подхватывается ?
Нет там никакого по-умолчанию
If you have multiple environment variables, you can substitute them by adding them to a default environment variable file named .env or by providing a path to your environment variables file using the --env-file command line option.
Это про подстановки в сам файл docker-compose.yml, а не про передачу переменных в контейнер. Чтобы их передать, нужно явно указать, через env_file: .env, либо через environment: конкретные переменные
То есть получается через .env в Dockerfile нельзя передать переменные ? Только через env_file: .env ?
Обсуждают сегодня