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_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 容器已经启动并运行正常
- 使用正确的用户名、密码、数据库名和容器名进行连接