【问题标题】:Disable redis persistence in docker在 docker 中禁用 redis 持久性
【发布时间】:2019-02-05 11:22:30
【问题描述】:

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

【问题讨论】:

  • 我不清楚你是否想要 a) 阻止 Redis 在运行时将任何内容写入磁盘,因此它只是从 RAM 运行,或者 b) 你想在每次刷新 Redis 的全部内容重新开始。您可以在您的 Redis 配置文件中实现 a)。您可以使用@grapes 答案实现 b),或使用 CLI 运行 flushall
  • 我想要 b) 但仅适用于一个 redis 实例。在同一个 docker-compose 文件中,我有第二个 redis-instance 应该被持久化

标签: docker redis docker-compose


【解决方案1】:

不是很优雅,但很有效:

  redis:
    image: "redis:5.0.3-alpine"
    command: [sh, -c, "rm -f /data/dump.rdb && redis-server"]  # disable persistence

/data/dump.rdb 是 Redis 存储数据库的地方。

【讨论】:

  • 简单一点:command: sh -c "rm -f /data/dump.rdb && redis-server"
【解决方案2】:

--renew-anon-volumes 解决了 Redis 在停止后从前一个容器中检索卷的潜在问题。

docker-compose up --renew-anon-volumes

请注意,这会影响其他在停止后保留其卷的容器,例如 MySQL 和 Postgres。

【讨论】:

  • 这行得通,而 --force-recreate 标志却没有。你能解释一下为什么世界上 redis 容器最终可以持久化吗?容器据说是无状态的,对吧?而且我没有为redis的/data dir添加任何voulmes,我所做的只是volumes:-./redis.conf:/redis.conf
  • @AnatolyAlekseev 好问题! redis Dockerfile 实际上为您创建了一个匿名卷,除非您明确调用 docker-compose down --volumesdocker-compose up --renew-anon-volumes,否则 Docker Compose 会跟踪该卷。
【解决方案3】:

对我来说这是可行的:

image: redis:4.0-alpine
command: [sh, -c, "rm -f /data/dump.rdb && redis-server --save ''"]

【讨论】:

    【解决方案4】:

    docker-compose 尝试--force-recreate 选项。这只是每次都从映像重新创建所有服务容器,从而保证根本没有数据存在。

    当您不想处理所有服务的单个标志时,对 ci 测试管道很有用。

    docker-compose up --force-recreate
    

    【讨论】:

    • 我可以重新创建一个特定的服务吗?因为我还有其他应该坚持的服务
    • 是的,您可以在 docker-compose up <servicename> 中重新创建特定服务
    • 试过这个,但它对我不起作用。也许设置只关心构建图像,而不是删除容器?
    【解决方案5】:

    为我工作

    command: redis-server --save "" --appendonly no
    image: redis:alpine
    

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      相关资源
      最近更新 更多