Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';redis访问docker compose中的磁盘吗?_Docker_Redis_Docker Compose - Fatal编程技术网

为什么可以';redis访问docker compose中的磁盘吗?

为什么可以';redis访问docker compose中的磁盘吗?,docker,redis,docker-compose,Docker,Redis,Docker Compose,根据docker文档,我使用redis对python应用程序进行了非常简单的第一次测试。这会在一段时间后崩溃,因为redis无法持久。我不知道为什么。您可以在此处找到公共回购: 我当前的docker-compose.yml是: web: build: . ports: - "5000:5000" volumes: - .:/code links: - redis redis: image: redis:latest volumes: - ./data

根据docker文档,我使用redis对python应用程序进行了非常简单的第一次测试。这会在一段时间后崩溃,因为redis无法持久。我不知道为什么。您可以在此处找到公共回购:

我当前的docker-compose.yml是:

web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis:latest
  volumes:
  - ./data:/data
编辑:这是日志的摘录:

1:M 09 Feb 10:51:15.130 # Background saving error
1:M 09 Feb 10:51:21.072 * 100 changes in 300 seconds. Saving...
1:M 09 Feb 10:51:21.073 * Background saving started by pid 345
345:C 09 Feb 10:51:21.074 # Failed opening .rdb for saving: Permission denied
1:M 09 Feb 10:51:21.173 # Background saving error
1:M 09 Feb 10:51:27.011 * 100 changes in 300 seconds. Saving...
1:M 09 Feb 10:51:27.011 * Background saving started by pid 346
346:C 09 Feb 10:51:27.013 # Failed opening .rdb for saving: Permission denied
Edit2:这是Redis在python中抛出的完整错误:

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error

有趣的是,我没有对redis映像做任何操作。

这是一个权限错误,请通过docker exec-It redis\u container\u name bash登录redis容器,并确保它对
/data
具有写权限

它可能不会,您可以通过几种方式修复它:使用
docker卷
而不是绑定装载主机,或者尝试通过在容器中具有与所有者匹配的uid/gid来修复主机的权限

此外,如docker hub页面中所述,您应该将redis命令设置为:

web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis:latest
  command: redis-server --appendonly yes
  volumes:
  - ./data:/data
如果您打算持久化数据


由于您的
数据
文件夹设置了错误的权限,请先将其删除,然后让docker compose创建一个新文件夹。

我已使用工作版本(标记0.2)更新了我的回购协议


一旦我使用docker文件的第2版,它就工作得很好。

它一定是你的机器中的某个东西,我已经测试了你的.yml文件,它对meAre有效。你确定它崩溃是因为Redis无法持久存在吗?这不是Redis的行为方式您可以使用
docker日志查看Redis容器的日志--遵循
。你能检查一下并把它贴在这里吗?你好,我已经添加了日志的一个摘录。你能帮我完成回购,更新到你认为应该是的,然后给我发送一个请求吗?我试过一些东西,但因为我是docker的新手,所以我不太懂。很抱歉