我正在尝试制作一个便携式解决方案,使我的应用程序容器可以连接到一个postgres容器。所谓“便携式”,是指我可以给用户两个docker run
命令,每个容器一个,它们将始终配合使用。
我在本地计算机上运行了一个postgres docker容器,我是这样运行它的:
docker run -p 5432:5432 -v $(pwd)/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=qwerty -d postgres:11
我能够从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的Docker容器的地址)。但是,我认为这不够具有可移植性,因为我无法保证Postgres容器的IP地址是什么。
我知道有--add-host
标志,但它还要求主机IP,我希望它是本地主机(127.0.0.1)。尽管有几个命中--add-host
的结果,但我无法让它们起作用,以便最终的Docker运行命令可以在任何计算机上运行时都相同。
我也尝试过这个:docker container port accessed from another container
我的情况是Postgres和myApp将成为运行在同一台计算机上的容器。我更喜欢非Docker组合的解决方案。