第34讲 Docker安装PostgreSQL数据库
本讲基于视频实际讲解内容整理
一、本讲概述
从本讲开始,项目要接入真正的数据库(PostgreSQL)。直接用安装包装数据库比较麻烦,我们用 Docker 来跑 PostgreSQL:一条命令拉起数据库,自带环境隔离,删掉容器也不影响本机。本讲讲解用 Docker 安装并启动 PostgreSQL。
二、为什么用 Docker 装数据库
| 方式 | 缺点 | Docker 方式 |
|---|---|---|
| 本机直接安装 | 配置繁琐、易污染系统环境 | 一条命令,隔离运行 |
| 多版本共存 | 端口/配置冲突 | 容器互不干扰 |
| 重装系统 | 数据丢失 | 数据用卷(volume)持久化 |
老师说明:Docker 把数据库打包成"容器",开箱即用。开发、测试、生产用同一套镜像,环境一致,最省心。
三、拉取并启动 PostgreSQL
3.1 拉取镜像
Shell
docker pull postgres:15
指定版本(如
15)更稳妥,避免默认latest带来的版本漂移。
3.2 启动容器
Shell
docker run -d \
--name my-postgres \
-e POSTGRES_USER=admin \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_DB=bbs \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
postgres:15
| 参数 | 含义 |
|---|---|
-d |
后台运行(detached) |
--name |
给容器起名,方便管理 |
-e POSTGRES_USER |
超级用户名 |
-e POSTGRES_PASSWORD |
超级用户密码 |
-e POSTGRES_DB |
初始化时创建的数据库名 |
-p 5432:5432 |
把容器 5432 端口映射到本机 5432 |
-v pgdata:... |
用数据卷持久化数据,容器删了数据还在 |
老师强调:
-v数据卷非常重要。如果不挂载卷,容器一删,里面的数据全没了。挂载后数据存在宿主机,可持久保存。
四、验证与管理
4.1 查看运行中的容器
Shell
docker ps
看到 my-postgres 状态为 Up 即启动成功。
4.2 进入容器执行 psql
Shell
docker exec -it my-postgres psql -U admin -d bbs
进入后可用 SQL 操作:
SQL
-- 查看所有表
\d
-- 创建表
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50)
);
-- 退出
\q
4.3 用图形化工具连接
也可以用 Navicat / DBeaver / pgAdmin 连接:
- 主机:
localhost - 端口:
5432 - 用户:
admin - 密码:
123456 - 数据库:
bbs
五、停止与重启
Shell
docker stop my-postgres # 停止
docker start my-postgres # 启动
docker rm -f my-postgres # 强制删除容器(数据卷 pgdata 仍在)
六、本讲小结
| 知识点 | 要点 |
|---|---|
| 拉镜像 | docker pull postgres:15 |
| 启动 | docker run -d --name ... -e ... -p 5432:5432 -v 卷:路径 |
| 关键环境变量 | USER / PASSWORD / DB |
| 数据持久化 | -v 挂载数据卷,删容器不丢数据 |
| 进入操作 | docker exec -it 容器 psql -U 用户 -d 库 |
| 连接信息 | localhost:5432 + 用户密码库名 |
七、课后练习
- 用
docker pull postgres:15拉取镜像 - 用
docker run启动一个名为my-postgres的容器,设置用户名/密码/库名并映射 5432 端口 - 用
-v挂载数据卷,确保数据持久化 - 用
docker ps确认容器在运行 docker exec -it进入容器,创建一个测试表并\d查看- 尝试用图形化工具连接你的 PostgreSQL,验证能连上