如何在Dockerfile

时间:2016-03-03 16:37:50

标签: docker dockerfile

我尝试通过以下语法排列在docker中启动服务器:

  1. CMD [ "forever", "start", "server/server.js" ]
  2. CMD [ "forever", "start", "server\/server.js" ]
  3. CMD forever start server/server.js
  4. 但他们每个人都失败了。

    前两个作为"forever start server"运行...注意丢失的/server.js篇。

    最后一个以"/bin/sh -c 'forever "

    运行

    那么将forever start server/server.js置于Dockerfile内以将其作为分离容器运行的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

按照评论中的建议,通过sh -c运行 语法是:

CMD["/bin/sh", "-c", "'forever start server/server.js'"]

如果您的工具需要运行登录shell,也可以试试这个:

CMD["/bin/bash", "-lc", "'forever start server/server.js'"]

这应该可以正常工作,具有与将命令放入单行中的标准sh shell相同的效果。

答案 1 :(得分:1)

我在运行它时在docker容器中启动Java应用程序时遇到了同样的问题。

从码头工具引用中您有三个机会:

CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

看看这里:Docker CMD

我不熟悉JavaScript,但假设您要启动的应用程序是Java应用程序:

CMD ["/some path/jre64/bin/java", "server.jar", "start", "forever", ...]

正如您评论中的其他人所说,您也可以通过您的ADD中的docker COPYDockerfile添加脚本,然后使用docker RUN启动它。< / p>

另一种解决方案是运行docker容器并通过容器内的docker run .. -v HOSTDIR:CONTAINERDIR安装带有所需脚本的目录,并使用docker exec触发该脚本。

请在此处阅读:Docker Filemounting + Docker Exec