我希望我的容器在运行时启动两个进程;
keep_awake.sh
),并且node app.js
是否有任何方法可以基于dockerfile在启动时同时启动这两项?
我正在考虑某种形式的bash滥用,但是还不知道具体是哪一个。
更复杂的是,keep_awake.sh
与app.js
位于不同的目录。
答案 0 :(得分:3)
您永远不需要人工“保持该容器活动”的过程。在您描述的情况下,您有一个长期运行的申请流程,这是双重事实。
最佳实践是让Docker容器运行单个进程,并将其作为 foreground 作业运行。如果该进程退出,则容器也将退出-您需要这样做。 (因为Docker看到tail -f /dev/null
仍在运行,所以让您的Node应用程序死掉有点令人尴尬,但您可能没有注意到。)
简而言之,以
结尾CMD ["node", "app.js"]
并忽略第二个不做任何事情的过程。