在Docker中运行两个可执行文件

时间:2019-07-10 13:53:58

标签: bash docker dockerfile

我希望我的容器在运行时启动两个进程;

  1. 通用的“正在运行此过程以使容器保持清醒状态”(keep_awake.sh),并且
  2. node app.js

是否有任何方法可以基于dockerfile在启动时同时启动这两项?

我正在考虑某种形式的bash滥用,但是还不知道具体是哪一个。

更复杂的是,keep_awake.shapp.js位于不同的目录。

1 个答案:

答案 0 :(得分:3)

您永远不需要人工“保持该容器活动”的过程。在您描述的情况下,您有一个长期运行的申请流程,这是双重事实。

最佳实践是让Docker容器运行单个进程,并将其作为 foreground 作业运行。如果该进程退出,则容器也将退出-您需要这样做。 (因为Docker看到tail -f /dev/null仍在运行,所以让您的Node应用程序死掉有点令人尴尬,但您可能没有注意到。)

简而言之,以

结尾
CMD ["node", "app.js"]

并忽略第二个不做任何事情的过程。