gpt4 book ai didi

dockerfile cmd 运行多个命令

转载 作者:行者123 更新时间:2023-12-02 18:54:06 25 4
gpt4 key购买 nike

我已经将 shellinabox 和 redis 组合在一个 docker 镜像中。

我的Dockerfile如下:

CMD ['/usr/local/work/scripts/run.sh']

ENTRYPOINT ["bin/bash"]

EXPOSE 4200/tcp

run.sh如下:

#!/bin/bash
cd $REDIS_HOME
src/redis-server
/usr/bin/shellinaboxd -p 4200

我想在docker启动时启动redis服务器和shellinabox。仅由redis启动。

当我启动 docker 并使用 ctrl +c 时,shellinabox 开始启动。

我知道如何使用“主管”来解决这个问题。有人知道如何使用 shell 脚本同时启动这两个服务吗?

最佳答案

在 docker 哲学中,每个容器应该有一个进程,并且可以使用 docker-compose 启动两个容器,一个用于 redis,一个用于 shellinaboxd。

但有时它更容易或出于其他原因:

在脚本 shell“src/redis-server”中启动 redis 并保持连接到控制台,直到它停止(例如使用 ctrl+c),然后启动 shellinaboxd。

您可以尝试将这一行“src/redis-server”替换为“nohup src/redis-server &”,然后redis将在fork进程中启动,并让shellinaboxd启动。

使用 docker-compose 的解决方案:

version: '2'
services:
redis:
build: ./Dockerfile
command: /usr/bin/src/redis-server
shellinabox:
build: ./Dockerfile
ports:
- 4200:4200
command: /usr/bin/shellinaboxd -p 4200

关于dockerfile cmd 运行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552621/

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