【问题标题】:Running a bash script inside a Docker container在 Docker 容器中运行 bash 脚本
【发布时间】:2016-01-03 14:14:20
【问题描述】:

如何在运行 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:当我登录到容器后启动脚本时,它可以正常工作,但直接从 Dockerfile 调用它时就不行

【问题讨论】:

    标签: node.js docker pm2


    【解决方案1】:

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

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

    【讨论】:

    • 可以指定带有路径的纯字符串。这是“外壳”形式
    【解决方案2】:

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

    试试

    CMD /opt/app/src/start.sh
    

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 2017-12-01
      • 2021-09-16
      • 1970-01-01
      • 2017-12-03
      • 2023-01-25
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多