当使用CMD ["python3", "./mycode.py"]
.
现在,我想要的是每分钟运行该 python 代码。
之前的 Dockerfile(只需运行一次):
FROM python:3.7
RUN apt-get update && \
apt-get install cron -y
RUN pip3 install requests
RUN head -n -1 /etc/ssl/openssl.cnf > /etc/ssl/temp && \
mv /etc/ssl/temp /etc/ssl/openssl.cnf
RUN echo "CipherString=DEFAULT@SECLEVEL=1" >> /etc/ssl/openssl.cnf
COPY . /app
WORKDIR /app
CMD ["python3", "./mycode.py"]
Run Code Online (Sandbox Code Playgroud)
之后的 Dockerfile(使用 crontab 每分钟运行一次):
FROM python:3.7
RUN apt-get update && \
apt-get install cron -y
RUN pip3 install requests
RUN head -n -1 /etc/ssl/openssl.cnf > /etc/ssl/temp && \
mv /etc/ssl/temp /etc/ssl/openssl.cnf
RUN echo "CipherString=DEFAULT@SECLEVEL=1" >> /etc/ssl/openssl.cnf
RUN echo "* * * * * python /app/mycode.py" >> editcron && \
crontab editcron
COPY . /app
WORKDIR /app
CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)
但是在使用 构建并运行新的 docker 映像后docker run -d --rm DockerImage
,它似乎不起作用。(而且, /var/log 目录中没有 cron 日志文件)
当我进入容器时docker exec -it DockerContainer /bin/bash
,我可以确认crontab -l
打印“* * * * * python /app/mycode.py”,并且python /app/mycode.py
运行正常。
这里可能有什么问题?
我经常将 crontab 配置保存在一个单独的文件中,它使 Dockerfile 保持干净且易于理解,
这是您可以尝试的工作示例
FROM python:3.6
RUN apt-get update && apt-get -y install cron vim
WORKDIR /app
COPY crontab /etc/cron.d/crontab
COPY hello.py /app/hello.py
RUN chmod 0644 /etc/cron.d/crontab
RUN /usr/bin/crontab /etc/cron.d/crontab
CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)
定时任务配置
#run python script every minutes
* * * * * python /app/hello.py > /proc/1/fd/1 2>/proc/1/fd/2
Run Code Online (Sandbox Code Playgroud)
您可以在此 Github Repo 中查看完整的工作示例
归档时间: |
|
查看次数: |
6549 次 |
最近记录: |