无法将容器化应用程序连接到容器化 postgres,接收拨号 tcp 连接被拒绝错误

Jon*_*ner 2 postgresql go docker

这个社区是我解决这个问题的最后手段,因为我已经为此奋斗了几个小时。

我有一个在一个容器中运行的 go 应用程序,在另一个容器中我正在运行一个 postgres 数据库。我能够连接到Postgres的从我去应用程序数据库,只要只有我的Postgres是一个容器内,而我去的应用程序是像往常一样在本地运行。但是,当我的 go 应用程序尝试从 docker 容器中访问 postgres 时,出现以下错误

dial tcp 127.0.0.1:8080: connect: connection refused 
Run Code Online (Sandbox Code Playgroud)

下面我尝试提供足够的信息,但如果需要,我很乐意添加更多信息。


我有 2 个使用以下端口运行的 docker 容器:

  • 转到应用程序,端口信息:8081/tcp -> 0.0.0.0:8081
  • postgres 数据库,端口信息:5432/tcp -> 0.0.0.0:8080

我正在运行go 应用程序:

docker run -it --rm --name gographqlserver --link postgresdb:postgres -d -p 8081:8081 gogogopher;
Run Code Online (Sandbox Code Playgroud)

和 postgres 数据库:

docker run -it --rm --name postgresdb -e POSTGRES_PASSWORD=hello123 -d -p 8080:5432 postgresimage;
Run Code Online (Sandbox Code Playgroud)

两个容器都可以毫无问题地启动。


我还尝试在 a 中连接两个容器docker network,但这没有帮助。


将不胜感激!

r3m*_*n0x 9

localhost在容器内使用的地址与您的主机地址不同。您应该改为执行以下操作之一:

  • 使用应用程序容器中的实际主机 IP
  • postgresdb容器的 IP 与本机端口 (5432) 一起使用。您可以使用docker inspect postgresdb.
  • 使用postgresdb两个容器连接到同一网络时,如主机名和本地端口(5432)