带有cron和flask应用程序的Docker容器
我正在尝试使用cron作业和flask应用程序配置docker容器 它就是不起作用 我知道每个容器必须只有一个CMD命令,但是带有cron和flask应用程序的Docker容器,docker,cron,dockerfile,Docker,Cron,Dockerfile,我正在尝试使用cron作业和flask应用程序配置docker容器 它就是不起作用 我知道每个容器必须只有一个CMD命令,但是 运行服务cron start CMD python hello.py 它不应该工作吗 ps:由于其他原因,我正在避免为cron作业创建单独的映像 FROM python:3 RUN apt-get update && apt-get install -qq -y cron COPY . . # Add crontab file in the c
- 运行服务cron start
- CMD python hello.py
FROM python:3
RUN apt-get update && apt-get install -qq -y cron
COPY . .
# Add crontab file in the cron directory
ADD ./cron_job/crontab /etc/cron.d/cron_job
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/cron_job
RUN service cron start
# hello.py => flask app
CMD python hello.py
Docker映像不保存正在运行的进程。执行RUN命令时,它仅在docker构建阶段执行,并在构建完成后停止 您需要在CMD(入口点)中指定服务cron start 我建议创建一个脚本来处理这些任务。因为容器设计为只运行一个进程。但是,如果将任务包装在一个脚本中,并且该脚本是入口点,则可以绕过此限制
CMD /start.sh
其中start.sh是启动cron服务,然后运行python脚本的脚本。您也可以使用supervisord,但在我看来,对于像这样的简单任务,不用麻烦了。在大多数情况下,不要为上司操心
参考上述说明:Docker映像不保存正在运行的进程。执行RUN命令时,它仅在docker构建阶段执行,并在构建完成后停止 您需要在CMD(入口点)中指定服务cron start 我建议创建一个脚本来处理这些任务。因为容器设计为只运行一个进程。但是,如果将任务包装在一个脚本中,并且该脚本是入口点,则可以绕过此限制
CMD /start.sh
其中start.sh是启动cron服务,然后运行python脚本的脚本。您也可以使用supervisord,但在我看来,对于像这样的简单任务,不用麻烦了。在大多数情况下,不要为上司操心
参考上述解释:和CMD服务cron start&python hello.py以及CMD服务cron start&python hello.py??