docker容器加入定時任務


最近項目服務要求轉docker,環境都搭好了,服務有些機制加入了crontab任務,但docker容器起來后,服務起來時將crontab任務寫入cron中,但就是不執行,幾番排查發現,容器的cron服務其實沒有起來,或者說默認處於[-]狀態,需要顯示將其start

下面講講我在項目中的解決方案。

linux系統中的cron服務默認是開機啟動,但容器並不是,需要手動start,比如我又有需求讓服務起來時就把cron的定時任務寫入cron中,而且我希望cron任務如期進行,下面是具體設置。

在Dockerfile中配置運行腳本

比如我的配置如下:

# dockerfile for my service
FROM myimage:tag
ENV python 3.7.9
WORKDIR /opt/mydir
ADD ./ /opt/mydir # Dockerfile放在項目目錄中
ENTRYPOINT ["sh", "myservice_run.sh"] # 容器起來時運行服務,另外也可以在里面添加cron啟動命令

運行腳本

如上文說的myservice_run.sh

#!/bin/bash

# start cron
service cron start

# start my service
sh myservice.sh # 如果后台運行,應該有前台進程或者設置 sleep 或者 tail -f 這些

在構建新鏡像后,啟動容器后,進入容器中,通過service --status-all可以查看[+] cron,另外再確認下cron任務 crontab -l

如果沒有基礎鏡像沒有cron,就install吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM