我有一个本地开发设置,我在其中建立隧道到远程数据库实例,并通过计算机上的端口将其公开。
我的机器还托管了一个我想连接到该远程数据库的docker容器。
为此,我无法转发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
et
现在,在我的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