Docker Compose 中 pgAdmin 连接 PostgreSQL 的配置与连接方法

学习笔记作者:admin日期:2025-07-01点击:36

摘要:本文详细介绍了如何在 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_EMAILPGADMIN_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 容器已经启动并运行正常
  • 使用正确的用户名、密码、数据库名和容器名进行连接

上一篇      下一篇