我尝试通过以下语法排列在docker中启动服务器:
CMD [ "forever", "start", "server/server.js" ]
CMD [ "forever", "start", "server\/server.js" ]
CMD forever start server/server.js
但他们每个人都失败了。
前两个作为"forever start server"
运行...注意丢失的/server.js
篇。
最后一个以"/bin/sh -c 'forever "
那么将forever start server/server.js
置于Dockerfile
内以将其作为分离容器运行的正确语法是什么?
答案 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 COPY
或Dockerfile
添加脚本,然后使用docker RUN
启动它。< / p>
另一种解决方案是运行docker容器并通过容器内的docker run .. -v HOSTDIR:CONTAINERDIR
安装带有所需脚本的目录,并使用docker exec
触发该脚本。
请在此处阅读:Docker Filemounting + Docker Exec