我自己学到了很多关于 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 时,出现此错误:
请大家帮我解决这个问题。
提前致谢
更新: 在您的帮助下@Hans 似乎更好。 现在我有另一个问题:
我必须在 postgress pg_hba.conf
中添加一个权限,我可以在容器中找到它。
你能帮忙吗?
谢谢
答案 0 :(得分:1)
您告诉 Teamcity 连接到在默认本地主机地址上运行的 postgres 服务器。在 Docker 术语中,这意味着在与 Teamcity 相同的容器中运行 in。不是。
您需要告诉 Teamcity 连接到数据库主机 postgres-tc
。这是您网络上 Postgres 容器的网络名称。