【问题标题】:Redis Docker Container Keeps Exiting [closed]Redis Docker容器不断退出[关闭]
【发布时间】:2020-09-09 01:45:21
【问题描述】:

我正在测试一个建立在 Centos7 基础镜像之上的 Redis 容器。

start.sh 脚本有一个入口点,在此之前我们将四个文件复制到容器中。

理想情况下,启动 redisServer.sh 和 redisCluster.sh 需要 start.sh 脚本。但是容器几乎立即存在。

如果我将 ENTRYPOINT 更改为 redisServer.sh,则容器可以正常工作,这意味着 redisServer 正在按预期启动。而且,如果我执行到容器中,我也能够成功运行 redisCluster.sh 而没有任何问题。

我到底哪里出错了。 另外我怎样才能将日志打印回我的主机进行调试

COPY redis.conf /home/demo/redis/redis.conf
COPY start.sh /home/demo/redis/start.sh
COPY redisServer.sh /home/demo/redis/redisServer.sh 
COPY redisCluster.sh /home/demo/redis/redisCluster.sh 
ENTRYPOINT [ "/bin/bash", "/start.sh" ]

其他脚本的内容如下

Content of start.sh
---------------------------
#!/bin/bash

bash redisServer.sh &
sleep 10
bash redisCluster.sh &
Content of redisServer.sh
-------------------------
#!/bin/bash

/usr/src/redis/src/redis-server /usr/src/redis/redis.conf

Content of redisCluster.sh
--------------------------
#!/bin/bash

printf 'yes' | src/redis-cli -h 10.11.0.1 -p 16000 --cluster create 10.11.0.1:16000 10.11.0.2:16000 10.11.0.3:16000

【问题讨论】:

    标签: linux bash shell docker redis


    【解决方案1】:

    如果您只是运行 start.sh 脚本,它将启动一个后台进程,等待 10 秒,启动第二个后台进程,然后退出。当该脚本退出时,容器也将退出。

    在这种情况下,您不需要这么复杂的东西。 redis-cli --cluster create 命令只需要对整个集群运行一次,而不是每个节点运行一次。所以在单个容器级别:

    1. 删除start.sh 脚本。
    2. 删除 Dockerfile 中的 ENTRYPOINT 行。
    3. 改为设置CMD ["/usr/src/redis/src/redis-server", "/usr/src/redis/redis.conf"]

    创建集群是一个棘手的问题,尤其是在the Redis cluster setup doesn't support DNS names at all 之后。这是手动设置容器专用 IP 地址非常有用的极少数情况之一。 (或者,如果您让 Docker 设置它们,您可以使用类似 hostthis script fragment 的工具稍后找到它们。)您可以使用 docker-compose rundocker run --rm 一个临时容器,连接到与 Redis 容器相同的网络,即只运行redis-cli 命令创建集群然后退出。

    docker-compose up
    docker-compose run redis1 redis-cli -h redis1 -p 16000 --cluster create ...
    > yes
    

    【讨论】:

    • 我过度简化了redisCluster.sh 脚本的内容以了解它退出的原因,但我现在明白了。基本上剧本里的内容比较多。 redisCluster.sh 仅在满足条件时才执行 redis-cli,条件是集群中的其他节点是否已启动,如果它们是,那么它们是否可访问,如果是,那么它们的集群设置是否已经存在,如果是,那么它将执行一个 Cluster ADDSLOTS 命令,而不是基本上用于完整集群设置的集群创建。
    猜你喜欢
    • 2017-12-07
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多