带有cron和flask应用程序的Docker容器

带有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作业和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 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??