如何设置主管以运行shell脚本

设置Dockerfile以安装节点prereq,然后设置supervisor以运行最终的npm install命令。在VirtualBox下运行CoreOS中的Docker

我有一个Dockerfile,可以正确设置所有内容:

来自ubuntu的


维护者&lt&书信电报;Me&gt&燃气轮机;
#安装docker基础
运行echo“debhttp://archive.ubuntu.com/ubuntu 精确的主宇宙“&gt/etc/apt/sources.list
运行apt获取更新
运行apt获取升级-y
#安装依赖项和节点
运行apt获取更新
运行apt get install-y python软件属性python g++make
运行添加apt存储库ppa:chris lea/node.js
运行apt获取更新
运行apt get install-y nodejs
#安装git
运行apt-get-install-y git
#安装主管
运行apt获取安装-y主管
运行mkdir-p/var/log/supervisor
#添加管理器配置文件
添加./etc/supervisord.conf/etc/supervisor/conf.d/supervisord.conf
#捆绑应用程序源
加上/src
#创建命令用户
运行/usr/sbin/useradd--create home--home dir/usr/local/nonroot--shell/bin/bash nonroot
运行chown-R非根目录:/src
#将安装脚本设置为可执行
运行/bin/chmod+x/src/etc/install.sh
#setup.env文件
运行echo“NODE_ENV=development\nPORT=5000\nRIAK_SERVERS={SERVER}”&gt/src/.env
#暴露正确的端口
曝光5000
#集装箱启动时启动supervisord
CMD[“/usr/bin/supervisord”]

然后我想设置supervisord以启动几个可能的过程之一,包括我已确认正常工作的安装shell脚本,install.sh,它位于应用程序的/etc目录中:

#/bin/bash
cd/src;npm安装
导出路径=$PATH:node_modules/.bin

但是,我对supervisor语法非常陌生,无法让它正确启动shell脚本。这是我的supervisord.conf文件中的内容:

[监管命令]
nodaemon=true
[程序:安装]
command=install.sh
目录=/src/etc/
用户=非根用户

当我运行Dockerfile时,一切都正常运行,但当我启动映像时,我得到以下信息:

2014-03-15 07:39:56854以root用户身份运行的CRIT主管(配置文件中没有用户)
2014-03-15 07:39:56856解析过程中警告包含额外文件“/etc/supervisor/conf.d/supervisord.conf”
2014-03-15 07:39:56913信息RPC接口“主管”已初始化
2014-03-15 07:39:56913警告cElementTree未安装,对XML-RPC使用较慢的XML解析器
2014-03-15 07:39:56914 CRIT服务器“unix_http_服务器”在未进行任何http身份验证检查的情况下运行
2014-03-15 07:39:56915信息主管从pid 1开始
2014-03-15 07:39:57918信息产卵错误:找不到命令“install.sh”
2014-03-15 07:39:58920信息产卵错误:找不到命令“install.sh”

很明显,我没有正确设置supervisor来运行这个shell脚本——是否有部分语法我弄错了

我发现最好的方法是设置:

[程序:我的程序名]
command=/path/to/my/command.sh
startsecs=0
自动重新启动=错误
startretries=1

发表评论