当前位置: 首页 > news >正文

Docker容器跑定时任务脚本

最近搞了一个Docker容器跑脚本,想设置一个定时任务,每天8点运行一次,结果死活不成功。排查了一天,有一点当局者迷了,明明时间是对的,明明时区是对的,定时任务也是启动的,它就是不执行。于是,我自己整了一个干净的ubuntu,从0到1开始构建基础镜像,然后进行跑脚本测试,这里要注意/etc/cron.d下面的定时任务,一定要注明用户,它是系统的定时任务,如果不写用户,也是无法执行的,示例如下:

Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed 

ailx10

网络安全优秀回答者

互联网行业 安全攻防员

去知乎 咨询

(1)准备好python脚本

import datetime# 定义日志文件的路径
log_file_path = '/root/test.log'# 获取当前时间
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 准备要写入日志的信息
log_message = f"{current_time} - Script has been executed successfully.\n"# 将信息写入日志文件
with open(log_file_path, 'a') as file:file.write(log_message)print(log_message)

(2)准备好启动定时任务的脚本

#!/bin/sh
service cron start
tail -f /var/log/cron.log

(3)准备好Dockerfile

# 使用你自己的基础镜像
FROM ubuntu:v1# 添加你的 Python 脚本到容器中
COPY test.py /root/test.py
COPY start.sh /root/start.shWORKDIR /root
RUN chmod +x /root/start.sh# 安装 cron 并设置 cron job
RUN apt-get update && apt-get install -y cron \&& echo "10 8 * * * root python3 /root/test.py >> /var/log/cron.log 2>&1" > /etc/cron.d/simple-cron \&& chmod 0644 /etc/cron.d/simple-cron \&& touch /var/log/cron.log && chmod 666 /var/log/cron.logCMD ["sh", "-c", "./start.sh"]

(4)构建镜像,启动容器

docker build -t test-cron:v1 .
docker run -d test-cron:v1

(5)这次定时任务,终于执行成功了


2025-04-27日 2更:我做了一点点优化,可以更加方便的管理这个容器了。首先这个容器是一直运行的,其次在容器中起了一个定时任务,最后如果容器退出了还能自动重启,完结撒花。

# 仅构建镜像(不启动)
docker-compose build# 后台启动
docker-compose up -d# 停止服务(不删除容器)
docker-compose stop# 强制停止并删除容器、网络等
docker-compose down

(1)更新了 Dockerfile

FROM mdr-base:v1# 安装 cron 服务
#RUN apt-get update && apt-get install -y cron# 配置定时任务
RUN touch /etc/cron.d/soar_cron \&& echo "10 10 * * * root python3 /root/soar_main.py" >> /etc/cron.d/soar_cron \&& chmod 644 /etc/cron.d/soar_cron# 创建启动脚本(启动 cron 并保持容器运行)
COPY run.sh /run.sh
RUN chmod +x /run.shCMD ["/run.sh"]

(2)新建了 docker-compose.yml

version: '3'
services:mdr-container:build: .volumes:- /home/ailx10/soar/tool:/rootrestart: alwaysnetwork_mode: host  # 启用宿主机网络

(3)启动脚本不变

#!/bin/sh
# 启动 cron 服务
service cron start# 保持容器运行
tail -f /dev/null

已开启送礼物

所属专栏 · 昨天 09:02 更新

网络技术基础

ailx10

网络安全话题下的优秀答主

最热内容 ·

PDF去除限制

发布于 2025-04-26 09:02・北京


文章转载自:
http://attitudinal.kjawz.cn
http://asbestosis.kjawz.cn
http://ahoy.kjawz.cn
http://aardwolf.kjawz.cn
http://agnostic.kjawz.cn
http://argent.kjawz.cn
http://agriculture.kjawz.cn
http://actual.kjawz.cn
http://agog.kjawz.cn
http://assaultiveness.kjawz.cn
http://apostolic.kjawz.cn
http://broomcorn.kjawz.cn
http://backing.kjawz.cn
http://bathless.kjawz.cn
http://bulletin.kjawz.cn
http://assamese.kjawz.cn
http://birdwoman.kjawz.cn
http://cheekybone.kjawz.cn
http://bombshell.kjawz.cn
http://autopista.kjawz.cn
http://balsas.kjawz.cn
http://antennule.kjawz.cn
http://atheneum.kjawz.cn
http://ambit.kjawz.cn
http://abducent.kjawz.cn
http://autologous.kjawz.cn
http://beravement.kjawz.cn
http://chromatron.kjawz.cn
http://chemoreceptivity.kjawz.cn
http://botanically.kjawz.cn
http://www.dtcms.com/a/160198.html

相关文章:

  • Spring 与 ActiveMQ 的深度集成实践(四)
  • UE 新建一个自带光照的场景
  • 【Linux系统】静态库与动态库
  • DLMS COSEM 数据对象 与 ASN.1 BER 编码 —— 详解一览
  • 视觉/深度学习/机器学习相关面经总结(2)(持续更新)
  • 【C++ 类和数据抽象】消息处理示例(2)
  • 展销编辑器操作难度及优势分析​
  • 微博安卓版话题热度推荐算法与内容真实性分析
  • Linux CentOS 安装Python 3.8.0
  • 代数拓扑和黎曼几何有什么联系吗?
  • 贪心算法和动态规划
  • 服务器异地备份,服务器异地备份有哪些方法?
  • 如何识别DDoS攻击类型及有效防护?一篇简明指南
  • OA 系统如何做好 DDoS 防护?从架构设计到实战防御的完整方案
  • 【HPC存储性能测试】01-OpenMPI部署
  • 树状数组单点操作+前缀K差分->区间K操作 -#131-#132
  • npm、pnpm 和 yarn 包管理工具
  • SpringBoot常用注解解析汇总
  • 吴恩达深度学习作业之风格转移Neural Style Transfer (pytorch)
  • Python生活手册-元组:保险柜与瑞士军刀
  • 深度学习新趋势:利用MLP取代卷积层——S2-MLPv2模型解析
  • DBeaver连接人大金仓数据库
  • 2025年度规划八步法:日事清目标管理+使命愿景模型驱动组织架构优化与业务流程升级
  • 虚拟列表+无限滚动的实现
  • Java自定义注解详解
  • RT Thread Studio创建USB虚拟串口工程
  • 设计一个食品种类表
  • 黑马点评redis改 part 6
  • Spring AOP思想与应用详解
  • 0804标星_复制_删除-网络ajax请求2-react-仿低代码平台项目