本文目录导读:

- 方法一:使用 Docker(最快、最通用,强烈推荐)
- 方法二:使用 Docker Compose(适合复杂环境或团队共享)
- 方法三:使用云服务提供商的免费沙盒
- 方法四:使用内存数据库(适用于单元测试)
- 总结:如何选择?
快速、可重复、隔离、可销毁,根据你的需求(开发测试、学习、还是集成测试),有以下几种主流且高效的方案。
以下是按“速度”和“场景”排序的几种方法:
使用 Docker(最快、最通用,强烈推荐)
这是目前最流行、最快速的方法,你可以在几秒到一分钟内启动一个隔离的数据库实例。
步骤:
-
确保已安装 Docker Desktop。
-
运行一行命令即可创建沙盒:
-
MySQL/PostgreSQL 示例:
# 创建 MySQL 8.0 沙盒(用户名root,密码root,端口映射到3306) docker run --name mysql-sandbox -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.0 # 创建 PostgreSQL 16 沙盒(用户名postgres,密码postgres,端口映射到5432) docker run --name pg-sandbox -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:16 # 创建 MongoDB 7.0 沙盒(无认证模式,端口映射到27017) docker run --name mongo-sandbox -p 27017:27017 -d mongo:7.0
-
Redis 示例:
docker run --name redis-sandbox -p 6379:6379 -d redis:7-alpine
-
-
用完即毁:
docker stop mysql-sandbox # 停止容器 docker rm mysql-sandbox # 删除容器(所有数据消失)
进阶:用
--rm参数启动,容器停止后自动删除。
优点: 极快、资源隔离、支持任何主流数据库、可自定义配置(内存限制、网络等)、便于集成到脚本/CI/CD。
使用 Docker Compose(适合复杂环境或团队共享)
如果你的沙盒需要多个服务(数据库 + 管理工具 + 初始化数据脚本),这是最好的选择。
步骤:
-
创建一个
docker-compose.yml文件:version: '3.8' services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: sandbox POSTGRES_PASSWORD: sandbox POSTGRES_DB: test_db ports: - "5432:5432" # 可以选择挂载初始化SQL脚本 volumes: - ./init.sql:/docker-entrypoint-initdb.d/init.sql adminer: image: adminer ports: - "8080:8080" -
启动:
docker compose up -d
(数据库和管理面板同时启动,访问
http://localhost:8080即可管理) -
停止并销毁:
docker compose down -v # -v 会删除卷,彻底清除数据
使用云服务提供商的免费沙盒
如果你不想在本地安装任何东西,或者需要临时演示给客户看,可以用云上的免费沙盒。
- Supabase:提供PostgreSQL云沙盒,有免费的NoSQL-like API接口,可以在浏览器里创建表、运行SQL。
- Neon:专门用于PostgreSQL的Serverless沙盒,支持分支(Branch)功能,可以像Git一样瞬间(毫秒级)为你的数据库创建一个完整副本用于测试。
- PlanetScale:MySQL兼容的Serverless沙盒,提供无锁Schema变更和分支功能。
- MongoDB Atlas M0:MongoDB官方提供的免费512MB沙盒集群,永久免费。
操作: 注册账号 -> 点击“创建集群” -> 等待1-2分钟 -> 获得连接字符串。
使用内存数据库(适用于单元测试)
如果你是开发者,需要在测试代码中快速沙盒,不要用 Docker,用内存数据库更快(零安装,随代码启动)。
- Java:使用 H2 或 HSQLDB。
- 配置:
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1 - 代码启动测试时自动创建,测试结束后自动销毁。
- 配置:
- Python:使用 SQLite (内存模式)。
- 连接:
sqlite3.connect(':memory:')
- 连接:
- Go:使用 go-sqlite3 的内存模式。
- Node.js:使用 better-sqlite3 或
sql.js(WebAssembly 版本)。 - .NET:使用 EF Core InMemory Provider 或 SQLite 内存模式。
如何选择?
| 你的场景 | 最佳方法 | 速度 | 隔离性 | 一句话建议 |
|---|---|---|---|---|
| 快速本地测试/学习 | Docker | 30秒 | 高 | 就一行 docker run ...,最省心。 |
| 改坏就删,反复创建 | Docker + --rm |
10秒 | 高 | 脚本化最佳实践。 |
| 团队协作,复杂配置 | Docker Compose | 1分钟 | 高 | 一个 docker compose up 搞定一切。 |
| 突发测试,不想装软件 | Neon / Supabase / PlanetScale | 2分钟 | 中 | 浏览器打开即用,免费。 |
| 代码中的单元测试 | 内存数据库(H2/SQLite) | 毫秒 | 低 | 随代码一起跑,无需外部依赖。 |
快速上手建议: 如果是初学者,从 Docker 开始,这是最正统、最通用的方案,记下上面那几行 docker run 命令,你就能在任何机器上快速创建任何主流数据库的沙盒。