定时执行python的docker容器
1. 创建 Python 脚本
确保你的 copy_goods.py
文件内容正确:
python
复制代码
# copy_goods.py import requests import mysql.connector from datetime import datetime import time # Example code for demonstration def main(): print(f"Script ran at {datetime.now()}") if __name__ == "__main__": main()
2. 创建 requirements.txt
列出你需要的 Python 包:
# requirements.txt requests mysql-connector-python
3. 创建 Dockerfile
编写 Dockerfile 来构建你的 Docker 镜像:
# Use an official Python runtime as a parent image FROM python:3.9-slim # Install cron RUN apt-get update && apt-get install -y cron # Set the working directory WORKDIR /usr/src/app # Copy the current directory contents into the container at /usr/src/app COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Give execution rights on the script RUN chmod +x /usr/src/app/copy_goods.py # Copy cron job to the cron.d directory COPY cronjob /etc/cron.d/cronjob # Give execution rights on the cron job RUN chmod 0644 /etc/cron.d/cronjob # Apply cron job RUN crontab /etc/cron.d/cronjob # Create the log file to be able to run tail RUN touch /var/log/cron.log # Run the command on container startup CMD cron && tail -f /var/log/cron.log
4. 创建 cronjob 文件
编写一个 cronjob
文件,设置定时任务:
# cronjob 0 0 * * * python /usr/src/app/copy_goods.py >> /var/log/cron.log 2>&1
这个 cron 表达式表示每天午夜(00:00)运行脚本。
5. 构建 Docker 镜像
在终端中导航到你的项目目录,然后运行以下命令来构建 Docker 镜像:
docker build -t python-cron-job .
6. 运行 Docker 容器
运行你的容器:
docker run -d --name python-cron-container python-cron-job
7. 验证日志
你可以通过以下命令查看日志,确认你的脚本是否按预期运行:
docker logs python-cron-container
总结总结
通过以上步骤,你创建了一个包含所有必要依赖的 Docker 镜像,并配置了一个每天定时运行 copy_goods.py
的 cron 任务。这样,每天都会在指定时间点自动运行你的 Python 脚本并记录输出日志。