如何从 PGAdmin4 连接到 docker Postgres 服务器
How can I connect to docker Postgres server from PGAdmin4
我是 Docker 容器的新手,但不是 Postgres 的新手(我过去曾深入研究过)。
问题是我正在尝试连接到从以下 Docker 容器启动的 Postgres 服务器 dpage/pgadmin4
问题是我无法使用 PGAdmin4 连接到服务器。
我收到以下错误:
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 5432?
could not connect to server: Address not available
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
我有以下 yaml 文件:
version: '3'
services:
db:
image: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: parola
PGDATA: /var/lib/postgresql/data/pgdata
pgadmin4:
image: dpage/pgadmin4
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: user@domain.com
PGADMIN_DEFAULT_PASSWORD: parola
使用psql命令行只有设置-h 0.0.0.0才能连接,如下:
psql -h 0.0.0.0 -U postgres
谁能告诉我我需要在 yaml 文件中设置什么,或者我如何配置才能允许来自 localhost/127.0.0.1 的连接?
我 运行 Ubuntu 20.04.2,AMD64 Docker 版本 20.10.7,构建 f0df350。
服务 pgadmin4
无法连接到服务 db
因为在 pgadmin4
内部的 5432 端口没有任何服务 运行ning
使用此配置,您仅将数据库映射到主机的 5432 端口。这就是为什么你能够 运行 psql -h 0.0.0.0 -U postgres
在你的机器(主机)
According to docker-compose pgadmin4
可以使用主机名访问数据库 db
你可以link配置一些额外的配置如下
version: '3'
services:
db:
image: postgres
restart: always
ports:
- "5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: parola
PGDATA: /var/lib/postgresql/data/pgdata
pgadmin4:
image: dpage/pgadmin4
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: user@domain.com
PGADMIN_DEFAULT_PASSWORD: parola
volumes:
- ./servers.json:/pgadmin4/servers.json
add a file called servers.json
in the same directory as docker-compose with the below contents。请注意,我已将主机添加为 db
{
"Servers": {
"1": {
"Name": "local db",
"Group": "Server Group 1",
"Port": 5432,
"Username": "postgres",
"Host": "db",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}
我是 Docker 容器的新手,但不是 Postgres 的新手(我过去曾深入研究过)。
问题是我正在尝试连接到从以下 Docker 容器启动的 Postgres 服务器 dpage/pgadmin4
问题是我无法使用 PGAdmin4 连接到服务器。 我收到以下错误:
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 5432?
could not connect to server: Address not available
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
我有以下 yaml 文件:
version: '3'
services:
db:
image: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: parola
PGDATA: /var/lib/postgresql/data/pgdata
pgadmin4:
image: dpage/pgadmin4
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: user@domain.com
PGADMIN_DEFAULT_PASSWORD: parola
使用psql命令行只有设置-h 0.0.0.0才能连接,如下:
psql -h 0.0.0.0 -U postgres
谁能告诉我我需要在 yaml 文件中设置什么,或者我如何配置才能允许来自 localhost/127.0.0.1 的连接?
我 运行 Ubuntu 20.04.2,AMD64 Docker 版本 20.10.7,构建 f0df350。
服务 pgadmin4
无法连接到服务 db
因为在 pgadmin4
内部的 5432 端口没有任何服务 运行ning
使用此配置,您仅将数据库映射到主机的 5432 端口。这就是为什么你能够 运行 psql -h 0.0.0.0 -U postgres
在你的机器(主机)
According to docker-compose pgadmin4
可以使用主机名访问数据库 db
你可以link配置一些额外的配置如下
version: '3'
services:
db:
image: postgres
restart: always
ports:
- "5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: parola
PGDATA: /var/lib/postgresql/data/pgdata
pgadmin4:
image: dpage/pgadmin4
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: user@domain.com
PGADMIN_DEFAULT_PASSWORD: parola
volumes:
- ./servers.json:/pgadmin4/servers.json
add a file called servers.json
in the same directory as docker-compose with the below contents。请注意,我已将主机添加为 db
{
"Servers": {
"1": {
"Name": "local db",
"Group": "Server Group 1",
"Port": 5432,
"Username": "postgres",
"Host": "db",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}