我有两个容器,第一个带有 django ,第二个带有 postgresql

好吧,在我的第一台服务器中,我运行了 django,我正在尝试将它与第二台服务器连接起来。
第二个容器公开了端口 32770 ,但在端口 5432 内部运行。
在我的本地机器上,我有连接:
服务器:'本地主机'
端口:32770
用户:'我的用户'
密码: ''

它正在连接,但是使用我的 django 容器,我收到此错误:

could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 32770?

端口 5432 也是如此

如何连接两台服务器?

最佳答案

由于您单独运行容器,因此您有不同的选择

在 postgres 容器的网络上运行 django

$ docker run -d ... postgres
<container id>

$ docker run -d ... --net container:<containerid> django

然后django可以在localhost:5432上找到postgres

运行 django 和 postgres 作为命名容器容器
$ docker run --name postgresdb -d ... postgres
<container id>

$ docker run -d ...  django

现在 django 可以在 postgresdb:5432 上找到 db

在主机 上运行两个容器
$ docker run --net host -d ... postgres
<container id>

$ docker run -d ... --net host django

然后django可以在localhost:5432上找到postgres

在同一网络上运行容器
$ docker network create mynet

$ docker run --name postgresdb --net mynet -d ... postgres
<container id>

$ docker run --net mynet -d ...  django

现在 django 可以在 postgresdb:5432 上找到 db

连接主机IP和映射端口
$ docker run -d -p 32770:5432 .... postgres

$ docker run -d .... django

Django 现在可以连接到 <yourdockerhostip>:32770 上的数据库。

更好的选择是使用 docker-compose 运行它。了解有关 https://docs.docker.com/compose/ 的更多信息

关于django - 连接两个docker容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46327006/

10-16 18:17
查看更多