使用相同的名称从另一个容器或主机连接到容器

时间:2019-08-17 03:43:34

标签: docker networking docker-compose

我有一个包含2个服务的docker compose文件-一个数据库和一个应用程序服务,如下所示。该应用程序使用如下环境文件中定义的配置连接到数据库。

var requestAnimFrame = (function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function( callback ) { window.setTimeout(callback, 1000 / 30); }; })(); function loop(){ requestAnimFrame(loop); ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.drawImage(video, 0, 0); setTimeout(loop, timeout); } loop();

我希望能够使用相同的env文件从应用程序容器内部和主机(即从容器外部)连接到db。

例如如果使用上述环境变量(数据库主机名为DATABASE_URL=postgresql://user:password1@localhost:5432/mydbname)从主机运行应用程序服务器,则它可以正常工作。

但是,如果我从应用程序容器运行应用程序服务器,则需要在环境变量中更改数据库主机名,以使其正常工作: localhost

如何配置docker compose以便可以在环境变量中使用同一主机从主机和应用程序容器进行连接?

docker-compose.yml

DATABASE_URL=postgresql://user:password1@postgresql:5432/mydbname

1 个答案:

答案 0 :(得分:1)

您无法为类似的配置容器,但是可以配置主机。

如果您使用的是Linux或MacOS,请向/etc/hosts添加一个条目,该条目将postgresql映射到本地主机。像这样:

127.0.0.1  localhost postgresql

Windows中有一个类似的文件。

然后,您只能使用指向postgresql的环境变量。

但是请注意,从主机直接访问数据库容器是一种不好的做法。仅在没有更好的解决方案时才使用它。