在Docker容器下運(yùn)行cronjob的全過程
當(dāng)您想要安排計劃任務(wù),可以使用內(nèi)置在 macOS 和 Linux 中的常見工具,比如 cron,或者像 AWS Lambda 這樣的特殊工具。Cron 不如 AWS Lambda 強(qiáng)大,但它在 Unix 系統(tǒng)的后臺任務(wù)中工作得很好,特別是在使用容器的情況下。然而,對于 Docker 來說這有點(diǎn)復(fù)雜,因?yàn)椴荒芎唵蔚貜慕K端開始新的 cron 作業(yè),并期望它工作。
如何docker化一個cron作業(yè)
要在 Docker 容器中運(yùn)行 cron 作業(yè),您需要使用 cron 并在 Docker 容器的前臺運(yùn)行它。
下面是一個如何設(shè)置的例子:
創(chuàng)建 Cron 文件
如何docker化一個cron作業(yè)如何docker化一個cron作業(yè)如何docker化一個cron作業(yè)如何docker化一個cron作業(yè)如何docker化一個cron作業(yè)???????Cron
創(chuàng)建一個文件,其中包含要在 Docker 容器下運(yùn)行的所有 cron 作業(yè)。
cat cron
我們的示例文件如下:
* * * * * echo "Current date is `date`" > /var/log/cron
創(chuàng)建 Dockerfile
接下來,創(chuàng)建一個安裝 cron 服務(wù)的 Dockerfile,并將腳本復(fù)制到容器。
在這里,我們提供了 3 個 Dockerfile 示例,它們使用不同的操作系統(tǒng)。
Dockerfile 與 Alpine Linux 結(jié)合
FROM alpine:3 # Copy cron file to the container COPY cron /etc/cron.d/cron # Give the permission RUN chmod 0644 /etc/cron.d/cron # Add the cron job RUN crontab /etc/cron.d/cron # Link cron log file to stdout RUN ln -s /dev/stdout /var/log/cron # Run the cron service in the foreground CMD [ "crond", "-l", "2", "-f" ]
Dockerfile 與 Apache 和 PHP 結(jié)合
FROM php:8.0-apache
# Install cron
RUN apt update && \
apt -y install cron
# Copy cron file to the container
COPY cron /etc/cron.d/cron
# Give the permission
RUN chmod 0644 /etc/cron.d/cron
# Add the cron job
RUN crontab /etc/cron.d/cron
# Link cron log file to stdout
RUN ln -s /dev/stdout /var/log/cron
# Start cron service
RUN sed -i 's/^exec /service cron start\n\nexec /' /usr/local/bin/apache2-foreground
Ubuntu Linux 的 Docker 文件
FROM ubuntu:latest # Install cron deamon RUN apt update && apt install -y cron # Copy cron file to the container COPY cron /etc/cron.d/cron # Give the permission RUN chmod 0644 /etc/cron.d/cron # Add the cron job RUN crontab /etc/cron.d/cron # Link cron log file to stdout RUN ln -s /dev/stdout /var/log/cron # Run the cron service in the foreground CMD ["cron", "-f"]
構(gòu)建與運(yùn)行容器
當(dāng)前目錄中有兩個文件,一個是 cron, 它包含了 cronjob。 一個是 Dockerfile, 它有 Docker 的構(gòu)建指令。運(yùn)行以下命令使用 Dockerfile 構(gòu)建 Docker 鏡像。
docker build -t my_cron .
鏡像構(gòu)建成功后,啟動容器:
docker run -d my_cron
這將啟動容器下的 cron 守護(hù)進(jìn)程,它將執(zhí)行 cron 文件中定義的所有計劃作業(yè)。
測試設(shè)置
我們已經(jīng)鏈接了 cron 日志文件 /var/log/cron 到 /dev/stdout ,Cron 服務(wù)生成的所有日志
可以使用 docker logs 命令查看。
首先,使用 docker ps 命令查找容器 id 或名稱。
docker ps
然后檢查 Docker 容器的日志文件。
docker logs container_id
在 cronjobs 中,我打印了當(dāng)前日期并把它們寫入日志中。

輸出如上所示,這意味著 cron 作業(yè)在 Docker 容器下正常運(yùn)行。
到此這篇關(guān)于在Docker容器下運(yùn)行cronjob的全過程的文章就介紹到這了,更多相關(guān)Docker運(yùn)行cronjob內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker構(gòu)建Maven+Tomcat基礎(chǔ)鏡像的實(shí)現(xiàn)
這篇文章主要介紹了Docker構(gòu)建Maven+Tomcat基礎(chǔ)鏡像的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼
這篇文章主要介紹了docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Docker本地鏡像的導(dǎo)出導(dǎo)入兩種方案介紹
這篇文章主要介紹了Docker本地鏡像的導(dǎo)出導(dǎo)入兩種方案的相關(guān)資料,兩種方法分別是export/import和save/load兩種方案,文中并對比了它們的差別和應(yīng)用場景,需要的朋友可以參考下2025-03-03
基于Docker版本squid搭建代理服務(wù)器的過程詳解
這篇文章主要介紹了基于Docker版本squid搭建代理服務(wù)器的配置方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下本文給大家介紹的非常詳細(xì)2024-03-03
詳解使用?docker?compose?部署?golang?的?Athens?私有代理問題
這篇文章主要介紹了使用?docker-compose?部署?golang?的?Athens?私有代理,幫助大家快速學(xué)習(xí)athens 如何構(gòu)建私有代理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04

