我希望我的容器在运行时启动两个进程;
- 通用的"此进程正在运行以保持容器处于唤醒状态"进程 (
keep_awake.sh
(,以及 -
node app.js
有没有办法让这两个在开始时启动,基于dockerfile?
我正在考虑某种滥用 bash,但还不知道具体是哪一种。
更复杂的是,keep_awake.sh
位于与app.js
不同的目录中。
你永远不需要人为的"保持这个容器的活动"过程。 在您描述的情况中,这是双重的,在这种情况下,您有一个长时间运行的应用程序进程。
最佳做法是让 Docker 容器运行单个进程,并将其作为前台作业运行。 如果该进程退出,容器也会退出 - 你想要这个。 (如果你的 Node 应用程序死了,但你没有注意到,这会有点尴尬,因为 Docker 看到tail -f /dev/null
仍在启动和运行。
简而言之,结束您的 Dockerfile
CMD ["node", "app.js"]
并忽略第二个"无所事事"过程。