LINUX.ORG.RU
ФорумAdmin

Dockerfile - как задаются переменные

 


0

2

Подскажите по самой логике работы.

Есть веб-приложение, запускаемое с настройками из собственного конфига (админский пароль, доступ до БД и т.д.).

При установке приложение ручками, эти переменные прописываются в конфиг-файле.

Когда я упаковываю образ через докер-файл, то могу указать через ENV и EXPOSE переменные среды. А потом при запуске контейнера эти ранее указанные переменные прокинуть.

Но, если я хочу запустить образ в пяти контейнерах на разных портах, то даже если укажу при запуске эти разные порты (и если при сборке образа их прокину), то порт, на котором доступно веб-приложение, жестко прописан в конфиг-файле.

Собственно, вопрос. Где и как задать порт (и другие переменные конфига), чтобы их можно было указывать при запуске контейнера.

Ответ на: комментарий от l0stparadise

Правильно ли я понимаю, что мне надо в конфигфайле веб-приложения вместо строки:

port=5123

Вставить:

port=VARIABLE1
И при запуске контейнера указать:
docker run -e VARIABLE1=5123

manik207
() автор топика

не повсем понимаю чего тебе не хватает? почему нельзя прописать типа такого

docker1 -p 80:8080 docker2 -p 80:8081 docker3 -p 80:8082 docker4 -p 80:8083 docker5 -p 80:8084

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

Novell-ch ★★★★★
()
Ответ на: комментарий от Novell-ch

Хорошо, с портами можно пробрасывать произвольно с контейнера на хост. Но в конфиге есть ещё учётные данные к БД. Тоже указан конкретный хост, порт, логин, пароль... Мне же пять машин нужно законнектить ни на одну базу под одним пользователем - а на пять разных под пятью разными. Как мне определить им эти данные при запуске? И как это повлияет на прописанный в образе конфиг?

manik207
() автор топика
Ответ на: комментарий от manik207

Монтируй(-v) конф. файл когда запускаешь контейнер. Там и пропишешь свои явки пароли.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.