从另一个容器访问Docker postgres容器
我正在尝试为将我的应用程序容器连接到postgres容器提供一个便携式解决方案。“便携式”是指我可以给用户两个docker
run命令,每个容器一个,它们将始终协同工作。
我的本地PC上运行着一个postgres docker容器,我这样运行它,
docker run -p 5432:5432 -v $(pwd)/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=qwerty -d postgres:11
我可以使用address从python flask应用程序访问它127.0.0.1:5432
。
我也将python应用程序也放置在docker容器中,但无法连接到postgres容器。
地址127.0.0.1:5432
无效。
地址172.17.0.2:5432
工作(172.17.0.2正在运行的Postgres泊坞窗容器的地址)。但是我认为这不是可移植的,因为我不能保证postgres容器的IP是什么。
我知道该--add-host
标志,但是它也在询问host-ip,我想成为本地主机(127.0.0.1)。尽管--add-
host遭受了几次打击,但我还是无法使它正常工作,因此最终dockerrun命令在运行它们的任何计算机上都可以相同。
我也尝试过这样:从另一个容器访问的docker容器端口
我的情况是postgres和myApp将是在同一台计算机上运行的容器。我希望使用非Docker组合解决方案。
回答:
Truong的评论让我再次尝试了这种方法,并且使它起作用了。这是我的步骤,以防其他问题。问题的症结在于需要一个容器以静态的方式(不变)来寻址另一个容器。答案是使用用户定义的网络,因为您可以命名一个容器,然后通过该名称引用该容器的IP。
我的脚步
docker network create mynetdocker run --net mynet --name mydb -v $(pwd)/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=qwerty -d postgres:11
现在postgres数据库的IP地址是mydb
,并且该容器的所有端口都暴露给该网络中运行的任何其他容器。
现在添加前端应用程序,
docker run --net mynet -ti -p 80:80 -v mydockerhubaccount/myapp
以上是 从另一个容器访问Docker postgres容器 的全部内容, 来源链接: utcz.com/qa/425263.html