无法从同一网络中的另一个容器访问 Postgress(在容器中)

时间:2021-07-04 08:46:15

标签: docker docker-compose

我自己学到了很多关于 docker 的知识,但我仍然面临一个主要问题,我需要你的帮助。

这是我的 dockercompose:

version: '3.3'
services:
 postgres:
  container_name: postgres-tc
  networks:
   - tools-net
  image: postgres
  expose:
   - 5432
  environment:
   - POSTGRES_PASSWORD=Admin10..
   - POSTGRES_HOST_AUTH_METHOD=trust

#service
 teamcity-server:
  ports:
   - '8112:8111'
  volumes:
   - '/var/run/docker.sock:/tmp/docker.sock:ro'
   - '/data/teamcity_server/datadir:/data/envdata/tc/datadir'
   - '/opt/teamcity/logs:/data/envdata/tc/logs'
  links:
   - "postgres:postgres"
  logging:
   options:
    max-size: 1g
  container_name: tc-server
  networks:
   - tools-net
  image: jetbrains/teamcity-server

networks:
   tools-net:
    external: true

teamcity-serve 需要访问其端口上的 postgress 才能开始工作。 两者都在此命令创建的同一个网络中。

docker network create -d bridge --subnet 172.50.0.0/16 tools-net

这里是运行 dockercompose up 后的网络检查:

[
    {
        "Name": "tools-net",
        "Id": "74708d3d114394032cbeb5f0a2a93893da38ce5dae2a555a451a189b00b52b2e",
        "Created": "2021-07-04T07:04:39.105791768Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.50.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "15a57ccfc229e361e40e940d01b6d6025820fee5ad50db4a61d0c411d4d61750": {
                "Name": "postgres-tc",
                "EndpointID": "8d5b9d192ed90545abe958134b9853d0aecba33cabd56f31a2c9681106ccdf6e",
                "MacAddress": "02:42:ac:32:00:02",
                "IPv4Address": "172.50.0.2/16",
                "IPv6Address": ""
            },
            "94eaa0ea0524ca4419ba8e300e80687db487e4f46b6623dabcc15d65c60bdde6": {
                "Name": "tc-server",
                "EndpointID": "90825befcc5633c3c59c5ec9d58b188d2862cd65cd2283b5c56ec3ecf5a95fd6",
                "MacAddress": "02:42:ac:32:00:03",
                "IPv4Address": "172.50.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

现在,当我尝试从 teamcity-server 访问 postgress 时,出现此错误:

enter image description here

请大家帮我解决这个问题。

提前致谢

更新: 在您的帮助下@Hans 似乎更好。 现在我有另一个问题: enter image description here

我必须在 postgress pg_hba.conf 中添加一个权限,我可以在容器中找到它。 你能帮忙吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您告诉 Teamcity 连接到在默认本地主机地址上运行的 postgres 服务器。在 Docker 术语中,这意味着在与 Teamcity 相同的容器中运行 in。不是。

您需要告诉 Teamcity 连接到数据库主机 postgres-tc。这是您网络上 Postgres 容器的网络名称。