【问题标题】:Error starting node with forever in docker container在 docker 容器中永远启动节点时出错
【发布时间】:2016-11-12 19:39:37
【问题描述】:

当我在 docker 容器中以永远启动节点时遇到问题,如果我手动启动工作,而不是 Dockerfile 中的相同命令,当构建和启动容器时,退出。 该命令在 bash 中有效:

docker run -it container_name bash forever start -c 'node --harmony' /my/path/app.js

我尝试将命令放入 Dockerfile 但容器没有启动

CMD forever start -c 'node --harmony' /my/path/app.js

【问题讨论】:

  • 创建一个小型 bash 脚本,它会为您启动它。这就是我们所做的。
  • 作为替代方案,使用 docker restart always 策略
  • 只是好奇,为什么要永远使用 docker?为什么不直接让 docker run node 呢?

标签: node.js docker forever


【解决方案1】:

尝试使用数组语法:

CMD ["forever", "start", "-c", "node --harmony", "/my/path/app.js"]

【讨论】:

    【解决方案2】:

    Google Group discussion

    Forever start script.js 在后台运行。要在前台运行forever,请尝试forever script.js

    这永远从前台开始,这正是 Docker 所需要的。请记住,只有在 CMD 中定义的进程启动并运行时,容器才是“活动的”。由于永远作为守护进程启动,因此命令本身退出,docker 也将退出。

    CMD forever -c 'node --harmony' /my/path/app.js
    

    【讨论】:

    • 请记住,目前有 an open issue 可以防止前台运行永远退出。
    【解决方案3】:

    放入你的 Dockerfile :

    CMD forever app.js
    

    【讨论】:

      【解决方案4】:

      我现在正在尝试在 docker 中使用 forever。这有效:

      CMD ["forever", "src/app.js"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-08
        • 2019-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多