我已经将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] 删除。
我来说两句