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

Anweisungen zur Verwendung der MySQL-Isolations-Leseansicht

Welche historische Version kann die aktuelle Tran...

Mehrere gängige Methoden für CSS-Layouts mit gleicher Höhe

Gleichhohes Layout Bezieht sich auf das Layout vo...

Teilen Sie 9 Linux Shell Scripting Tipps für die Praxis und Interviews

Vorsichtsmaßnahmen 1) Interpreter am Anfang hinzu...

Anweisungen zur Verwendung der MySQL-IndexOF-Funktion

Wie unten dargestellt: LOCATE(Teilzeichenfolge,Ze...

Vue+Flask realisiert Videosynthesefunktion (Drag & Drop-Upload)

Inhaltsverzeichnis Wir haben in einem früheren Ar...

So fügen Sie CentOS7 systemd benutzerdefinierte Systemdienste hinzu

systemd: Das Service-Systemctl-Skript von CentOS ...

MySQL 5.7.17 Winx64 Installations- und Konfigurations-Tutorial

Heute habe ich die MySQL-Datenbank erneut auf mei...

Element-Beispielcode zum Implementieren dynamischer Tabellen

Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...

So installieren Sie die Linux-Onlinesoftware gcc online

Befehle zur Linux-Onlineinstallation: yum install...

MySQL verwendet Ereignisse, um geplante Aufgaben abzuschließen

Ereignisse können die Ausführung von SQL-Code ein...

Linux-Fernsteuerungsprogramm für Windows-System (drei Methoden)

Manchmal müssen wir Programme auf dem Windows-Sys...

DHTML-Objekte (gemeinsame Eigenschaften verschiedener HTML-Objekte)

!DOCTYPE Gibt die Document Type Definition (DTD) ...

HTML-Code einer Webseite: Erzeugung von Lauftext

In diesem Abschnitt beschreibt der Autor die spez...

Detaillierte Erklärung der Verwendung von SetUp- und Reactive-Funktionen in Vue3

1. Wann soll setUp ausgeführt werden? Wir alle wi...