我有一个包含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
答案 0 :(得分:1)
您无法为类似的配置容器,但是可以配置主机。
如果您使用的是Linux或MacOS,请向/etc/hosts
添加一个条目,该条目将postgresql
映射到本地主机。像这样:
127.0.0.1 localhost postgresql
Windows中有一个类似的文件。
然后,您只能使用指向postgresql
的环境变量。
但是请注意,从主机直接访问数据库容器是一种不好的做法。仅在没有更好的解决方案时才使用它。