Fügen Sie dem Debian-Docker-Container geplante Crontab-Aufgaben hinzu

Fügen Sie dem Debian-Docker-Container geplante Crontab-Aufgaben hinzu

Mittlerweile basieren die meisten Docker-Images auf Debian

# Katze /etc/Problem
Debian GNU/Linux 9 \n \l

Docker-Container unterstützen keine Hintergrunddienste. Auf Hintergrunddienste wie systemctl service crontab kann nicht zugegriffen werden über

RUN systemctl start nginx

Um eine solche Lösung zu implementieren, müssen Sie zum Starten Ihr eigenes Einstiegspunktskript schreiben. Dieser Artikel beschreibt, wie geplante Aufgaben in einem Debian-basierten Docker-Container eingerichtet werden.

Hintergrund des Falles

Ich habe ein Frontend-Projekt bereitgestellt und das Nginx-Image verwendet. Da das offizielle Image auf Debian basiert, unterscheidet sich die Größe nicht wesentlich von Alpine, sodass ich Debian als Containersystem verwendet habe.

Das Dockerfile sieht so aus

VON nginx:1.15.10
WARTUNGSPERSÖNLICHKEIT Ryan Miao

KOPIEREN Sie „sources.list /etc/apt/sources.list“
Führen Sie apt-get update und apt-get install -y net-tools aus. procps curl wget vim telnet cron 、
  && apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN mkdir -p /data/log/nginx && mkdir -p /data/web && rm /etc/nginx/conf.d/default.conf
Füge default.conf /etc/nginx/conf.d/ hinzu
HINZUFÜGEN von index.html /data/web/

ADD clean_log.sh /Daten/
KOPIEREN Sie clean-cron /etc/cron.d/clean-cron
RUN chmod 755 /data/clean_log.sh && crontab /etc/cron.d/clean-cron

EINSTIEGSPUNKT nginx && cron && /bin/bash

Es geht wahrscheinlich darum, cron zu installieren, dann die nginx-Konfiguration zu ersetzen, dann unsere statischen Dateien zu kopieren und schließlich nginx und cron zu starten.

Lassen Sie mich Ihnen erklären, warum es zeitgesteuerte Aufgaben gibt. Sie können sehen, dass wir ein geplantes Bereinigungsskript haben. Da nginx selbst kein Protokollverarbeitungsmodul bereitstellt, gibt es ein Bereinigungsskript. Das Bereinigungsskript muss regelmäßig ausgeführt werden, daher gibt es eine geplante Aufgabe. Dann wird festgestellt, dass der Docker-Container den Dienst nicht unterstützt.

Im Allgemeinen sind mehrere Schritte erforderlich:

installieren

apt-get install cron

zu crontab hinzufügen

crontab /etc/cron.d/your-crontab

Starten Sie Cron, wenn Docker startet

ENTRYPOINT cron && xxxxx

PS: Viele Leute bevorzugen immer noch Alpine als Bildmatrix, weil es klein ist. Aber dieser Linux-Befehl ist tatsächlich unbekannt.

Zusammenfassen

Oben habe ich Ihnen das Hinzufügen von geplanten Crontab-Aufgaben zu Debian-Docker-Containern vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Zusammenfassung einiger Gründe, warum geplante Crontab-Aufgaben nicht ausgeführt werden
  • So implementieren Sie geplante Aufgaben der zweiten Ebene mit dem Linux Crontab Shell-Skript
  • So verwenden Sie crontab, um eine geplante Aufgabe einmal pro Sekunde in Linux auszuführen
  • Gründe, warum geplante Crontab-Aufgaben unter Linux nicht ausgeführt werden
  • Beispiel für die Verwendung von django-crontab zur Implementierung geplanter Aufgaben

<<:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.11

>>:  Zusammenfassung der 7 Fallstricke bei der Verwendung von React

Artikel empfehlen

Nginx verwendet Lua+Redis, um IP dynamisch zu blockieren

1. Hintergrund Bei unserer täglichen Website-Wart...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

Beispieloperation für die Summe des Mysql-Varchar-Typs

Einige Freunde haben beim Erlernen von Datenbanke...

Verwendung des Linux-Befehls ifconfig

1. Befehlseinführung Der Befehl ifconfig (Netzwer...

Das WeChat-Applet implementiert eine einfache Taschenrechnerfunktion

In diesem Artikel wird der spezifische Code für d...

Beispiel für die Implementierung der Hochverfügbarkeit von Keepalived+Nginx

1. Einführung in Keepalived Keepalived wurde ursp...

Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

Docker Swarm ist ein von Docker entwickelter Cont...

TinyEditor ist ein einfacher und benutzerfreundlicher HTML-WYSIWYG-Editor

Vor einigen Tagen habe ich Ihnen einen inländisch...