gpt4 book ai didi

docker - 为什么redis不能访问docker-compose中的磁盘?

转载 作者:IT老高 更新时间:2023-10-28 12:43:44 24 4
gpt4 key购买 nike

根据 docker 文档,我尝试了一个非常简单的带有 redis 的 python 应用程序的第一次测试。这会在一段时间后崩溃,因为 redis 无法持久化。我不知道为什么。你可以在这里找到公共(public) repo :Github repo

我当前的 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_container_name bash登录redis容器,确保对/data有写权限。

可能没有,您可以通过多种方式修复它:使用 docker volume 而不是绑定(bind)挂载主机,或者尝试通过匹配 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

如果您打算持久化数据。

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

关于docker - 为什么redis不能访问docker-compose中的磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35022883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com