Mar*_*oma 5 cron service docker
当我使用正在运行的Docker容器中的启动cron服务时
service cron start
Run Code Online (Sandbox Code Playgroud)
有用。但是线
RUN service cron start
Run Code Online (Sandbox Code Playgroud)
在Dockerfile中似乎没有任何作用。为什么?
我考虑过将其更改CMD为CMD ["startup.sh"]先运行service cron start然后再运行run.py(Python Web服务器)的方式。但是我希望Web服务器不要以root用户身份运行,因此service cron start会失败。
每个RUN命令都使用来自上一步的结果映像和RUN作为容器命令的arg在您的构建主机上创建一个临时容器。容器仅在您执行的命令处于活动状态时运行,因此如果它是像您所做的那样启动后台守护程序的命令,则容器在命令返回时退出,而不是在后台守护程序退出时退出。
该RUN命令用于构建您的图像,它是分层文件系统和各种元数据,这些元数据告诉 docker 如何使用该文件系统(环境变量、入口点和/或默认运行的命令等)。它与 a 非常不同,CMD它告诉 docker 当该图像变成容器时要运行什么。因此,对于您需要在容器中运行的进程,它需要成为您的一部分,CMD或者ENTRYPOINT因为从中运行的进程RUN不是静态文件系统映像的一部分。
我也会听从其他人的建议,复制一个已经存在的带有 cron 的图像,不需要重新发明这个轮子。如果您的容器中需要有多个进程,您可能需要使用像 supervisord 这样的工具来一起运行 cron 和您的应用程序。尽管在可能的情况下,您应该弄清楚如何将其分解为可以独立更新的多个容器。
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |