0

我创建了一个 docker 文件来创建一个 pgAdmin4 容器和一个 postgres 容器。

version: '3.8'

services:
 postgres:
   container_name: pg_container
   image: postgres
   restart: always
 environment:
   POSTGRES_USER: webquiver
   POSTGRES_PASSWORD: webquiver
   POSTGRES_DB: quiver_db
 ports:
   - "5432:5432"
 pgadmin:
   container_name: pgadmin4_container
   image: dpage/pgadmin4
   restart: always
   environment:
     PGADMIN_DEFAULT_EMAIL: admin@admin.com
     PGADMIN_DEFAULT_PASSWORD: admin
   ports:
     - "5050:80"

运行 docker compose up 时,我可以转到 localhost:5050 以访问 pgAdmin4 并使用我的凭据登录,您可以在代码中看到。但是当我使用服务器的下拉菜单时,它是空的。什么都没有被创造。而且我无法在那里创建任何服务器。它不允许我这样做。我得到错误:

Unable to connect to server:

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?

请帮忙。谢谢^^

问候

4

2 回答 2

0

好的,经过一夜睡眠后,我发现了问题。对于服务器主机,我写了数据库名称而不是真正的容器名称。所以 pgAdmin 找不到容器。

祝你今天过得愉快。:)

于 2021-07-08T08:28:09.190 回答
0

我已经复制了你的 docker-compose 文件,一切都很好。我猜对 postgres 和 pgadmin 如何从头开始交互存在误解。pgadmin 只是您可以连接到 postgres 数据库的前端,它不会自动搜索任何现有的 postgres 服务器。

我可以使用此主机和端口在 pgadmin 中添加服务器:postgres:5432 因为在 docker 内部会将服务名称解析为postgres其他服务 pgadmin 的主机名。 在此处输入图像描述

当重新启动组合时,此配置将丢失,因为没有指定保留配置的卷。因此,您必须遵循Importing-servers中的步骤,并在每次开始合成时重复它们。例如:构建您自己的 pgadmin 映像,指定启动时要导入的 json

  • 使用 docker composebuild: 属性指定源
于 2021-07-08T04:00:14.790 回答