gpt4 book ai didi

docker - redis docker - 创建一个包含数据的容器

转载 作者:可可西里 更新时间:2023-11-01 11:12:59 26 4
gpt4 key购买 nike

我想运行一个包含初始数据的 redis 容器。在documentation的图像,我可以使用一个卷来安装到 /data。我的问题是:redis 是否能够从中读取数据并加载它?如果是这样,我挂载的目录中应该有什么?我(非常天真)的尝试是放置一个名为“someFile”的文件,希望 Redis 知道用键“someFile”保存它,并将文件的内容作为数据。显然它没有用。

如有任何帮助,我们将不胜感激。

最佳答案

根据你的初始数据集有多大,如果你的初始数据变化不大,让你干净的 docker 容器在启动时从 *.redis 文件加载它可能更容易使用 redis-cli ( link )。

创建你的种子命令文件(my-data.redis):

SET key1 val1
SET key2 val2
...
...

创建redis启动shell脚本(my-redis.sh):

# start server in background and wait for 1 sec
redis-server --daemonize yes && sleep 1
# slurp all data from file to redis in memory db (note the dir)
redis-cli < /my-dir/my-data.redis
# persist data to disk
redis-cli save
# stop background server
redis-cli shutdown
# start the server normally
redis-server

使用您的 shell 脚本作为 CMD 创建一个自定义的 redis docker 镜像,就像这样(更好的解决方案是破解入口点,但谁有时间这样做?):

FROM redis:latest
COPY my-data.redis /my-dir/
COPY start-redis.sh /my-dir/
CMD ["sh", "/my-dir/my-redis.sh"]

完成。不需要外部卷或构建器容器。构建并运行:

docker build -t my-redis:latest .
docker run -p 6379:6379 my-redis:latest

关于docker - redis docker - 创建一个包含数据的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279497/

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