现在搭个测试环境,谁还手动装 Monref="/tag/2029/" style="color:#3D6345;font-weight:bold;">goDB 或 Redis 啊?下载、解压、改配置、加环境变量……光是配端口冲突就能折腾半小时。不如直接上 Docker,几条命令,NoSQL 数据库秒级就位,开发调试、本地联调、CI/CD 流水线全都能接得上。
为什么 NoSQL 容器化这么香?
不是所有数据库都适合“开箱即用”,但 NoSQL 类(比如 MongoDB、Redis、Cassandra)天生轻量、无状态、配置集中,特别适配容器场景。你不用管它装在哪台机器、依赖什么版本的 glibc,只关心:数据目录挂对没、端口映射通不通、要不要持久化。连运维同学都夸你这次部署“没留后门”。
MongoDB 容器化三步走
以官方镜像 mongo:6.0 为例,本地快速起一个带 auth 的单节点:
docker run -d \
--name my-mongo \
-p 27017:27017 \
-v /mydata/mongo:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always \
mongo:6.0跑起来之后,用 Studio 3T 或 mongosh 连 mongodb://admin:123456@localhost:27017 就能直接操作。注意 /mydata/mongo 是你本机的真实路径,确保有读写权限,否则容器一启动就退出。
Redis 更简单,甚至可以不挂卷
如果你只是临时缓存或跑个 demo,Redis 根本不用持久化:
docker run -d \
--name my-redis \
-p 6379:6379 \
-e REDIS_PASSWORD=pass123 \
--restart=always \
redis:7-alpine \
redis-server --requirepass $REDIS_PASSWORD连上去试试:redis-cli -h 127.0.0.1 -p 6379 -a pass123,输入 set hello world 回车,立马返回 OK —— 没有比这更顺滑的体验了。
进阶:用 docker-compose 编排多个 NoSQL 服务
项目里同时要 MongoDB + Redis?写个 docker-compose.yml 一起拉起来:
version: '3.8'
services:
mongodb:
image: mongo:6.0
ports: ["27017:27017"]
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin123
volumes:
- ./mongo-data:/data/db
redis:
image: redis:7-alpine
ports: ["6379:6379"]
command: redis-server --requirepass redis123
volumes:
- ./redis-data:/data保存后终端执行 docker-compose up -d,两个服务自动启动、网络互通,应用里直接用 mongodb://admin:admin123@mongodb:27017 和 redis://:redis123@redis:6379 就能访问,连 hosts 都不用改。
小提醒:别踩这些坑
挂载目录权限不对?Ubuntu 上常因 SELinux 或 rootless Docker 导致容器无法写入 /data/db,加一句 chown -R 999:999 ./mongo-data(MongoDB 官方镜像默认用 UID 999 运行);
Redis 启动报错 “Can't open the log file”?删掉 command 行,改用 redis.conf 挂载方式更稳;
本地开发频繁重启?加上 --rm 参数,停掉就自动清理容器,避免一堆 Exited (137) 堆在 docker ps -a 里。