我有两个容器,第一个包含django
,第二个包含postgresql
。
好吧,在我的第一台服务器中,我运行django
,我正在尝试将其与第二台服务器连接。
第二个容器暴露了端口32770
,但在端口5432
内部运行。
在我的本地机器上,我有连接:
服务器:'Localhost'
港口:32770
用户:'myuser'
密码:''
它正在连接,但是使用我的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
如何连接两台服务器?
答案 0 :(得分:2)
由于您单独运行容器,因此您有不同的选项
在postgres容器网络上运行django
$ docker run -d ... postgres
<container id>
$ docker run -d ... --net container:<containerid> django
然后django可以在localhost:5432
将django和postgres作为命名容器容器运行
$ docker run --name postgresdb -d ... postgres
<container id>
$ docker run -d ... django
现在django可以在postgresdb:5432
在主机上运行两个容器
$ docker run --net host -d ... postgres
<container id>
$ docker run -d ... --net host django
然后django可以在localhost:5432
在同一网络上运行容器
$ docker network create mynet
$ docker run --name postgresdb --net mynet -d ... postgres
<container id>
$ docker run --net mynet -d ... django
现在django可以在postgresdb:5432
连接到主机IP和映射端口
$ docker run -d -p 32770:5432 .... postgres
$ docker run -d .... django
Django现在可以连接到<yourdockerhostip>:32770
上的数据库。
更好的选择是使用docker-compose
运行它。详细了解https://docs.docker.com/compose/
答案 1 :(得分:1)
如果您发送了配置文件会更好。但是,我认为你需要使用docker-compose。在文档中,您可以找到有关容器之间通信的信息。
简单配置例子:
system_mysql:
image: mysql:5.6.27
container_name: system_mysql
hostname: system_mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=user
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=databse
ports:
- "3306:3306"
django:
restart: always
container_name: django
hostname: django
.
. continue with [environment, volumes, build]
.
depends_on:
- system_mysql