我需要运行一个带有Redis预先配置为使用配置文件和ACL文件的Docker容器。我的Dockerfile (与redis.conf
和users.acl
放在同一个文件夹中)如下:
FROM redis/redis-stack:latest
WORKDIR /db
COPY redis.conf ./redis-stack.conf
COPY users.acl ./users.acl
ENV PORT=6379
EXPOSE 6379
我使用docker run -p 6379:6379 --mount type=volume,source=database-vol,target=/db,readonly=0 container_name
运行容器,使用一个命名卷。
在此之后,Redis服务器启动,但是没有使用这些config/acl文件,而是使用一个默认的.conf
,它似乎被放置在/opt/redis-stack/etc
文件夹中。使用Dockerfile中的COPY
将我的文件放在那个文件夹中没有帮助:文件在那里,但是服务器没有使用它们:redis-cli
命令acl list
只返回默认用户,这意味着忽略了我的.conf
文件。
我知道有可能在docker run
中使用--env REDIS_ARGS=""
传递参数,但我不确定是否/哪些参数将设置配置文件。
如何使容器中的redis服务器使用我的文件?他们有可能在任意地点吗?
发布于 2022-10-18 15:09:36
经过一番努力,终于想出了办法。redis-stack-server
(或者redis-server
,如果您使用的是非堆栈映像)可执行文件已经在PATH
中进行了配置,因此可以轻松地从Dockerfile中配置CMD
或RUN
。
要使用给定的配置文件运行服务器,我使用CMD [ "redis-stack-server", "redis.conf" ]
。然后,完整的Dockerfile如下:
FROM redis/redis-stack:latest
WORKDIR /usr/local/db
COPY redis.conf ./redis.conf
COPY users.acl ./users.acl
ENV PORT=6379
EXPOSE 6379
CMD [ "redis-stack-server", "redis.conf" ]
这将启动具有给定配置的Redis Stack服务器,以及ACL文件中提供的用户。
https://stackoverflow.com/questions/74111667
复制相似问题