Docker Compose 中 pgAdmin 连接 PostgreSQL 的配置与连接方法
学习笔记作者:admin日期:2025-07-01点击:183
摘要:本文详细介绍了如何在 Docker Compose 配置中正确设置 PostgreSQL 和 pgAdmin 容器,并指导如何通过 pgAdmin 连接 PostgreSQL 数据库。重点包括网络配置、环境变量、容器名的使用以及常见问题排查。
一、修正后的 Docker Compose 配置
version: '3.8'
services:
  postgres:
    image: postgres:16-alpine
    container_name: bitmagnet-postgres
    volumes:
      - /root/dockerdata/postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: bitmagnet
      POSTGRES_USER: postgres
    shm_size: 5g
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      start_period: 20s
      interval: 10s
  pgadmin_PAXY:
    image: dpage/pgadmin4:latest
    container_name: pgadmin_paxy
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: securepassword
    ports:
      - "8080:80"
    volumes:
      - /root/dockerdata/pgadmin:/var/lib/pgadmin
    networks:
      - baota_net
networks:
  baota_net:
    external: true二、pgAdmin 连接 PostgreSQL 的步骤
1. 访问 pgAdmin Web 页面
打开浏览器,访问:
http://<你的服务器IP>:8080      使用你在 PGADMIN_DEFAULT_EMAIL 和 PGADMIN_DEFAULT_PASSWORD 设置的账号密码登录。
2. 添加 PostgreSQL 服务器连接
登录后,点击左侧菜单栏的 “Add New Server”(添加新服务器)。
General 标签页:
- Name: bitmagnet-postgres(自定义名称)
Connection 标签页:
- Host name/address: bitmagnet-postgres(PostgreSQL 容器的container_name)
- Port: 5432
- Maintenance database: bitmagnet
- Username: postgres
- Password: postgres
- Save password?: 勾选
三、补充验证方法
docker exec -it pgadmin_paxy ping bitmagnet-postgres如果能 ping 通,说明网络没问题。
四、常见问题排查
| 问题 | 可能原因 | 
|---|---|
| 无法连接数据库 | 没有共享网络、PostgreSQL 没启动完成、密码错误 | 
| 显示 could not translate host name "bitmagnet-postgres" | 容器不在同一网络,或者容器名拼写错误 | 
| 显示 FATAL: password authentication failed for user "postgres" | 密码不匹配,检查环境变量 | 
| pgAdmin 页面打不开 | 检查端口映射是否冲突,例如 80 是否被占用 | 
五、总结
只要确保以下几点,pgAdmin 就可以顺利连接 PostgreSQL 容器:
- 两个容器在同一个 Docker 网络中
- PostgreSQL 容器已经启动并运行正常
- 使用正确的用户名、密码、数据库名和容器名进行连接