2015-12-31 78 views
0

如何在运行Docker容器后启动脚本。在Docker容器中运行bash脚本

这里是我的Dockerfile的一部分:

FROM nodesource/trusty:0.10.30 
RUN mkdir /opt/app/ && cd /opt/app/ 
ADD ./api/package.json /opt/app/package.json 
RUN cd /opt/app/ && npm install 
ADD ./api/src /opt/app/src 
RUN npm -g install pm2 
WORKDIR /opt/app/src 
ADD start.sh start.sh 
RUN chmod 755 /opt/app/src/start.sh 
CMD ./opt/app/src/start.sh 

和start.sh包含:

#!/usr/bin/env bash 
cd /opt/app/src 
node app.js --env=dev: 
pm2 updatePM2 
pm2 startup 
pm2 save 

PS:当我启动脚本记录到containerit后的作品完美,但不是要求时它直接来自Dockerfile

回答

0

路径不是CMD的有效参数。它应该是:

CMD ["./opt/app/src/start.sh"] 
+0

可以指定与路径的普通字符串。这是“壳”的形式 – Matt

0

您已设置您的WORKDIR/opt/app/src,那么你正在尝试使用./运行相对于该位置的脚本。这意味着你正在尝试运行/opt/app/src/opt/app/src/start.sh

尝试

CMD /opt/app/src/start.sh