如何使用不同的configuration文件在Docker上运行Redis?

我想在运行在docker上的Redis服务器上设置一个密码。 我已经按照https://registry.hub.docker.com/_/redis/上的说明进行操作 :

1.我已经创build了一个包含Dockerfile的文件夹:

FROM redis COPY redis.conf /usr/local/etc/redis/redis.conf CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] 

2.我已经添加了一个redis.conf文件:

 requirepass thepassword 

3.我使用以下方法build立图像:

 docker build -t ouruser/redis . 

我开始了这个容器:

 docker run --name my-redis -p 0.0.0.0:6379:6379 -d ouruser/redis redis-server --appendonly yes 

redis服务器没有任何密码! 我不懂为什么。

运行命令:

 docker run --name my-redis -p 0.0.0.0:6379:6379 -d ouruser/redis redis-server --appendonly yes 

redis-server --appendonly yes覆盖Dockerfile中定义的CMD,所以你的conf文件将被忽略。 只需将conf文件的path添加到运行命令中即可:

 docker run --name my-redis -p 0.0.0.0:6379:6379 -d ouruser/redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes 

或者,设置一个入口脚本或者向CMD指令添加--appendonly yes