dockerfile cmd运行多个命令

波波

我已经将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,一个用于shellinaboxed。

但是有时候会更容易,或者由于其他一些原因:

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章