动态docker组合运行时环境变量
我有一个本地开发设置,通过隧道连接到远程数据库实例,并通过计算机上的端口公开该实例 我的机器也是一个docker容器的主机,我想连接到这个远程数据库 为此,我无法转发动态docker组合运行时环境变量,docker,docker-compose,environment-variables,containers,Docker,Docker Compose,Environment Variables,Containers,我有一个本地开发设置,通过隧道连接到远程数据库实例,并通过计算机上的端口公开该实例 我的机器也是一个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
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
然后在应用程序内部,我可以引用主机IP
。这是可行的,但这意味着每次切换网络时,我都必须更改我的docker compose.yml
,这是一种痛苦
理想情况下,我希望在容器启动时为其提供ifconfig
的当前输出
我已经看过docker.env
文件,但它似乎只包含静态数据。
我已经在
Dockerfile
中查看了RUN
,我觉得您应该研究一下服务发现的概念,它基本上会用您传入的名称注册您的服务,并在您关闭服务时删除关联。@zenwraight是否仍然适用于本地开发?在实际部署的应用程序上,我的主机名是静态的。是的,您也可以在本地开发中使用它。我也不是这方面的专家,只是知道理论上你可以看看nginx服务器,它提供了所有这些功能。