You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pgAdmin 4连接Docker部署的PostgreSQL服务器失败求助

解决pgAdmin连接PostgreSQL容器失败的问题

1. 修正pgAdmin连接的主机地址

在pgAdmin创建服务器时,不要填写127.0.0.1。因为pgAdmin运行在独立容器中,和PostgreSQL容器处于同一Docker内部网络,需使用PostgreSQL服务的名称postgres作为主机地址,端口保持5432不变。

2. 修复docker-compose配置的语法错误

你的配置文件存在YAML缩进和格式问题,正确配置如下:

version: '3.8'
services:
  postgres:
    image: postgres:13  # PostgreSQL版本
    container_name: postgres_container
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ../src/scripts/data/init.sql:/docker-entrypoint-initdb.d/init.sql  # 挂载初始化脚本
    ports:
      - "5432:5432"
  pgadmin:
    image: dpage/pgadmin4:latest  # pgAdmin官方镜像
    container_name: pgadmin_container
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com  # pgAdmin登录邮箱
      PGADMIN_DEFAULT_PASSWORD: admin  # pgAdmin登录密码
    ports:
      - "8080:80"  # 暴露pgAdmin到本地8080端口
    depends_on:
      - postgres
    volumes:
      - pgadmin_data:/var/lib/pgadmin
volumes:
  postgres_data:
  pgadmin_data:

关键修正点:

  • postgres服务的volumes下两个挂载项需同级,均以-开头
  • depends_on中的服务名需添加-,符合YAML列表格式

3. 验证PostgreSQL容器状态

执行命令查看容器运行状态:

docker-compose ps

若postgres容器状态不是Up,查看日志排查启动失败原因:

docker-compose logs postgres

重点检查init.sql是否存在语法错误,以及宿主机上../src/scripts/data/init.sql的路径是否与docker-compose.yml的位置匹配。

4. 确认本地端口未被占用

若宿主机已有PostgreSQL服务占用5432端口,会导致容器端口映射失败。执行以下命令检查端口占用:

# Linux/macOS
lsof -i :5432
# Windows
netstat -ano | findstr :5432

若端口被占用,可停止本地PostgreSQL服务,或修改docker-compose中PostgreSQL的端口映射(例如改为"5433:5432"),容器间连接仍用5432,本地连接则用5433。

内容的提问来源于stack exchange,提问作者Sarah LENET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:42:44