在Docker中禁用Redis持久性

时间:2019-02-05 11:22:31

标签: docker redis docker-compose

根据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)?

4 个答案:

答案 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 ''"]