Docker 创建开发/测试数据库
用 Docker 容器化开发和测试数据库,获得更稳定的环境隔离、启动速度和迁移一致性。
#type / howto
#status / growing
#tech / dev / backend
#resource / docker
#resource / database
[!info] related notes
- 前置笔记:
- 相关 MOC: 数据库 MOC
- 相关资源: 测试数据库的方案, 用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境, Docker
Docker 创建开发/测试数据库
目标
用容器快速启动、销毁和重建数据库环境,避免本机手装数据库导致的版本漂移和环境污染。
前置条件
- 已安装 Docker
- 已确认宿主机端口和已有数据库不会冲突
步骤
为什么用 Docker
用 Docker 管理开发/测试数据库,最直接的价值是:
- 移植方便
- 启停成本低
- 环境隔离明确
- 团队成员更容易共享同一套版本和初始化方式
一个最小原则
开发数据库和测试数据库尽量不要共用同一个容器、同一个端口、同一个数据卷。
一个最小示例
services:
postgres-dev:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: app_dev
ports:
- "5432:5432"
postgres-test:
image: postgres:16
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: app_test
ports:
- "5433:5432"
验证
docker ps能看到数据库容器正常运行- 本机能连接到开发库和测试库
- 删除并重建容器后,环境能按预期恢复
常见问题
- 只换数据库名、不换端口和容器,通常不够隔离
- 不同场景不要共用同一个数据卷,否则测试可能污染开发数据
- 如果只是学习 MySQL / PostgreSQL 的基础操作,直接看 用 Docker 启动本地 MySQL 和 PostgreSQL 练习环境 更直接