定时执行python的docker容器

作者: gavin 分类: Docker 发布时间: 2024-05-28 09:19

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 脚本并记录输出日志。