У меня есть локальная настройка разработки, где я туннелирую к удаленному экземпляру базы данных и выставляю это через порт на моей машине.
Моя машина также является хостом для док-контейнера, который я хочу подключить к этой удаленной базе данных.
Для этого я не могу перенаправить порт на localhost
(что будет означать что-то другое внутри контейнера Docker), поэтому я пересылаю его на адрес моего локального IP-адреса.
ifconfig en0 | awk '$1 == "inet" {print $2}'
выходы 10.0.0.5
ssh -N -L 10.0.0.5:9876:database-instance.website.com:9876 instance-to-tunnel-through.website.com
др
Теперь по моему docker-compose-yml
я могу сделать:
version: "3"
my-app
ports:
- 5000:5000 # expose app to host on port 5000
build: ./my-app # point to my-app's Dockerfile
environment:
- HOST_IP=10.0.0.5
А потом внутри приложения я могу сослаться на HOST_IP
. Это работает, но это означает, что мне приходится менять docker-compose.yml
каждый раз, когда я переключаю сети, что является болью.
В идеале, я бы хотел, чтобы контейнер выдавал текущий вывод ifconfig
, когда он запускается.
Я просмотрел файлы Docker .env
, но, похоже, они содержат только статические данные.
Я смотрел на RUN
в Dockerfile