简要说明

使用docker-compose部署Postgres数据库和管理页面pgAdmin4,在同一网络下,pgAdmin4可以直接使用容器名访问Postgres

内容

文件目录结构
postgres 文件夹
├── docker-compose.yaml 文件
├── .env 文件
└── pgdata 文件夹

docker-compose.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
services:
postgresql:
image: postgres:17
container_name: postgresql
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "5432:5432"
volumes:
- ./pgdata:/var/lib/postgresql/data
networks:
- postgresnet

pgadmin4:
image: dpage/pgadmin4
container_name: pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
ports:
- "5433:80"
depends_on:
- postgresql
networks:
- postgresnet

networks:
postgresnet:
external: true # 表示这是一个外部已存在的网络

docker-compose.yaml 文件中的ports:下面左侧的数字是对外端口,可以改成自己想要的端口,右侧的数字是容器内部端口,不需要改动。

.env

1
2
3
4
5
6
7
8
# PostgreSQL 环境变量
POSTGRES_USER=这里写你的PostgreSQL用户名
POSTGRES_PASSWORD=这里写你的PostgreSQL密码

# pgAdmin 环境变量
PGADMIN_DEFAULT_EMAIL=这里写你的pgAdmin登录邮箱
PGADMIN_DEFAULT_PASSWORD=这里写你的pgAdmin登录密码

.env 文件中的中文删去修改成自己的,不需要加空格

使用步骤

由于部分系统创建网络不会严格按照docker-compose.yaml文件中的网络名创建,所以需要提前创建网络。postgresnet子网需要按照172.17.0.0/16的格式创建。

部署成功后,访问http://ip:5433,输入PGADMIN_DEFAULT_EMAILPGADMIN_DEFAULT_PASSWORD登录 pgAdmin4,可以选中文

http://ip:5433 ip 是你的服务器 ip 地址5433 是你在docker-compose.yaml文件中pgadmin4设置的外部端口,也就是左侧的数字

点击对象 注册 服务器

常规选项卡中名称任意,在连接选项卡中主机名称/地址 输入postgresql用户名 输入 POSTGRES_USER密码 输入 POSTGRES_PASSWORD ,点击保存即可连接到 PostgreSQL 数据库。

添加 PostgreSQL 服务器,输入POSTGRES_USERPOSTGRES_PASSWORD即可连接到 PostgreSQL 数据库。

主机名称/地址 输入postgresql 由于在同一网络下,可以直接使用容器名访问,直接写postgresql即可。
端口号默认为5432,由于在同一网络下,使用内部端口,不需要修改。