Docker-Compose.yaml
bash
services:
postgres:
image: postgres:16
container_name: my_postgres
restart: unless-stopped
env_file:
- ./.env
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
- ./initdb:/docker-entrypoint-initdb.d:ro
pgadmin:
image: dpage/pgadmin4
container_name: my_pgadmin
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: lzdssd@qq.com
PGADMIN_DEFAULT_PASSWORD: admin123
ports:
- "5050:80"
volumes:
pgdata:
✅ 第一步:确认你的 postgres 容器信息
运行:
bash
docker ps
找到你的 PostgreSQL 容器,类似:
CONTAINER ID NAME IMAGE PORTS
xxxxx my_postgres postgres:16 5432/tcp
你需要确认三个关键信息:
| 信息 | 说明 | 示例值 |
|---|---|---|
| Host | pgAdmin 与 postgres 在同一个 docker compose 网络中 | my_postgres |
| Port | postgres 容器内部端口 | 5432 |
| Username | POSTGRES_USER | postgres |
| Password | POSTGRES_PASSWORD | 123456 |
| DB Name | POSTGRES_DB | mydb |
如果你用 docker-compose,通常连接方式如下:
Host:postgres 容器名,例如 my_postgres
Port:5432
✅ 第二步:在 pgAdmin4 中添加 PostgreSQL Server
- 登录 pgAdmin4
- 左侧 "Servers" → 右键 → Create → Server...
🟦 General 选项
- Name: 随便填,例如:
Local Postgres
🟩 Connection 选项
按你 docker-compose 的名字填写。例如:
| 选项 | 填什么 |
|---|---|
| Host name/address | my_postgres(容器名) |
| Port | 5432 |
| Maintenance database | postgres |
| Username | postgres |
| Password | 你设置的密码,如 postgres123 |
⚠ 不要填 localhost!pgAdmin 在容器里,localhost 是 pgAdmin 容器本身,不是你的数据库。
🟩 如你的 docker-compose 是下面这样的:
yaml
services:
my_postgres:
image: postgres:16
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
POSTGRES_DB: testdb
那你在 pgAdmin 填:
Host: my_postgres
Port: 5432
User: postgres
Password: 123456
Database: testdb
🎉 第三步:创建数据库
连接成功后:
Servers → Local Postgres → Databases → 右键 → Create → Database
输入:
- Database:
demo - Owner: postgres
保存即可。
🎉 第四步:创建数据表
选择你刚建的数据库 demo:
demo → Schemas → public → Tables → 右键 Create → Table
示例表结构(用户表 user):
| Column | Type | Constraints |
|---|---|---|
| id | serial | Primary key |
| name | varchar(50) | not null |
| age | int |
填完后保存。
🎉 第五步:增删改查(SQL)
右键你的 demo 数据库 → Query Tool
输入 SQL:
▶ 插入数据
sql
INSERT INTO public.user (name, age) VALUES ('Tom', 25);
▶ 查询数据
sql
SELECT * FROM public.user;
▶ 更新数据
sql
UPDATE public.user SET age = 30 WHERE name = 'Tom';
▶ 删除数据
sql
DELETE FROM public.user WHERE name = 'Tom';