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

Eine kurze Diskussion über JavaScript-Drosselung und Anti-Shake

Inhaltsverzeichnis Drosselung und Anti-Shake Konz...

Vergleich mehrerer Beispiele zur Einfügungseffizienz in MySQL

Vorwort Aus beruflichen Gründen musste ich kürzli...

So verbergen Sie die Grenze/Trennlinie zwischen Zellen in einer Tabelle

Nur den oberen Rand anzeigen <table frame=above...

Klassischer Beispielcode für JavaScript-Funktionsaufrufe

Inhaltsverzeichnis Klassisches Beispiel für einen...

Chrome überwacht Cookie-Änderungen und weist Werte zu

Der folgende Code führt die Überwachung von Cooki...

Eine kurze Analyse zum Festlegen des Anfangswerts des Linux-Roots

Ubuntu erlaubt standardmäßig keine Root-Anmeldung...

Lösung für Vues Unfähigkeit, Array-Änderungen zu beobachten

Inhaltsverzeichnis 1. Vue-Listener-Array 2. Situa...

XHTML: Rahmenstruktur-Tag

Rahmenstruktur-Tag <frameset></frameset&...

Implementierung der Docker-Bereitstellung von Webprojekten

Im vorherigen Artikel wurde der Docker-Dienst ins...

In einem Artikel erfahren Sie, wie Sie ein Vue-Plugin schreiben

Inhaltsverzeichnis Was ist ein Plugin Plugins sch...

Detaillierte Erklärung des Workbench-Beispiels in MySQL

MySQL Workbench – Modellierungs- und Designtool 1...

Tutorial zur Installation des Tomcat-Servers unter Windows

1 Herunterladen und vorbereiten Zuerst müssen wir...

MySQL-Fehler 1290 (HY000) Lösung

Ich habe lange mit einem Problem gekämpft und das...