根据this链接,可以通过设置--save ''
来防止Redis实例的持久性。但是,当我尝试在docker-compose.yml中使用该参数时,redis实例仍会从磁盘加载数据库并保留所有数据:
version: '3'
services:
redis:
image: "redis:alpine"
command: ["redis-server", "--save"] # disable persistence
ports:
- "7777:6379"
我也尝试过command: ["redis-server", "--save", ""]
,但问题仍然存在。
如何强制执行非持久性(每次重新启动时为空redis)?
答案 0 :(得分:4)
--renew-anon-volumes
解决了Redis停止后从前一个容器中检索卷的潜在问题。
docker-compose up --renew-anon-volumes
请注意,这会影响其他容器,这些容器在停止后仍保持其容量不变,例如MySQL和Postgres。
答案 1 :(得分:2)
不是很优雅,但是可以工作:
redis:
image: "redis:5.0.3-alpine"
command: [sh, -c, "rm -f /data/dump.rdb && redis-server"] # disable persistence
/data/dump.rdb
是Redis存储数据库的地方。
答案 2 :(得分:1)
尝试--force-recreate
的{{1}}选项。这只是每次都从映像重新创建所有服务容器,从而保证了没有数据持久存在。
当您不想处理所有服务的单独标志时,可用于ci测试管道。
docker-compose
答案 3 :(得分:0)
对我来说这可行:
image: redis:4.0-alpine
command: [sh, -c, "rm -f /data/dump.rdb && redis-server --save ''"]