在Docker容器中运行bash脚本

时间:2015-12-31 15:11:52

标签: node.js docker pm2

如何在运行docker容器后启动脚本。

这是我的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调用它时

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

尝试

CMD /opt/app/src/start.sh