小编Ali*_*r H的帖子

从dump.rdb恢复在docker上运行的redis

我想要做的是使用我从生产服务器获取的dump.rdb,并在我的开发环境中使用它,这是由一个非常简单的撰写文件定义的.

为简单起见,假设我的应用程序与redis和flask的docker docs中的这个组合示例相同,所以docker-compose.yml看起来像:

version: '2'
 services:
   web:
     build: .
     ports:
      - "5000:5000"
     volumes:
      - .:/code
     depends_on:
      - redis
   redis:
     image: redis
Run Code Online (Sandbox Code Playgroud)

这会在重新启动之间持续存在redis数据,但您无法访问redis文件,因为docker-compose.yml中没有为redis安装卷.所以我改变我的compose文件为redis安装一个卷,我也想强制redis来保存数据,官方的redis图像文档说如果我使用'appendonly'就会发生这种情况.

redis:
  image: redis
  command: redis-server --appendonly yes
  volumes:
    - ./redis:/data
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我的数据将保持原样,就像它们在原始示例中一样,我现在可以在/ redis路径中看到dump.rdb和appendonly.aof.问题是,如果我想从dump.rdb恢复,我需要关闭appendonly(例如,请参阅数字海洋的如何备份和恢复你的redis-data-on-ubuntu-14 -04),并且没有append-only我看不到如何让compose文件写入卷.

如何生成一个docker compose,它将在我可以切换dump.rdb文件的卷中保留redis,从而将生产快照插入到我的开发环境中?

更新 以下组合有效,但在测试时请耐心等待,因为dump.rdb的创建不是即时的(因此它看起来像是失败了).此外,redis官方图片文档暗示您必须在不使用时使用appendonly:

redis:
  image: redis
  volumes:
    - ./redis:/data
Run Code Online (Sandbox Code Playgroud)

redis docker-compose

7
推荐指数
1
解决办法
2257
查看次数

标签 统计

docker-compose ×1

redis ×1