GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So konfigurieren Sie den Supervisor im Docker richtig

Laut offizieller Dokumentation:

Es kann nur einen CMD geben Anweisung in einem Dockerfile . Wenn Sie mehr als einen CMD angeben dann nur die letzten CMD wird wirksam.

Und Ihr Dockerfile hat zwei CMD-Befehle, also den Befehl php-fpm überschreibt

/usr/bin/supervisord

Damit Sie PHP-Befehle ausführen können, aber den im Container erstellten Supervisor-Socket nicht finden können.

Sie können Ihr Problem beheben, indem Sie die letzten CMD löschen Befehl im Zusammenhang mit PHP-FPM wie Sie Supervisor bereits konfiguriert haben um es zu starten und Ihr Dockerfile sollte einen CMD haben Befehl:

CMD ["/usr/bin/supervisord"]

Die Idee dabei ist, den Supervisor zu eliminieren und stattdessen das auszuführen, was der Supervisor früher in mehreren verschiedenen Containern ausgeführt hat. Sie können dies ganz einfach mit docker-compose orchestrieren , beispielsweise alle, die denselben Container mit unterschiedlichem CMD ausführen Überschreibungen oder derselbe Container mit einem anderen CMD Schicht am Ende, um es aufzuteilen. Das Problem dabei ist, dass der Supervisor Docker den Status der von ihm verwalteten Prozesse nicht mitteilen kann. Es wird immer "lebendig" sein, auch wenn alle seine Prozesse vollständig zerstört sind. Wenn Sie diese direkt aufdecken, können Sie sehen, dass sie abgestürzt sind.

Am besten teilen Sie jeden dieser Dienste in separate Container auf. Da es offiziell vorgefertigte für MySQL und so weiter gibt, gibt es wirklich keinen Grund, selbst einen zu bauen. Was Sie tun möchten, ist diesen supervisord zu übersetzen config auf docker-compose formatieren.

Mit separaten Containern können Sie Dinge wie docker ps tun Um zu sehen, ob Ihre Dienste korrekt ausgeführt werden, werden sie alle einzeln aufgelistet. Wenn Sie einen aktualisieren müssen, können Sie das ganz einfach tun, Sie arbeiten einfach mit diesem einen Container, anstatt das Ganze herunterziehen zu müssen.

Die Art und Weise, wie Sie es hier angreifen, behandelt Docker wie eine ausgefallene VM, was es wirklich nicht ist. Was es stattdessen ist, ist ein Prozessmanager , wo diese Prozesse zufällig vorgefertigte Disk-Images und eine Sicherheitsschicht um sie herum haben.

Stellen Sie Ihre Umgebung aus einzelnen Prozesscontainern zusammen und Ihr Leben wird viel einfacher, sowohl aus Wartungs- als auch aus Überwachungssicht.

Wenn Sie diese Konfiguration als etwas docker-compose ausdrücken können umgehen können, dann sind Sie dem Umstieg auf eine anspruchsvollere Verwaltungsebene wie Kubernetes einen Schritt näher gekommen, was die logische Schlussfolgerung dieser speziellen Migration sein könnte.


Linux
  1. So installieren und konfigurieren Sie Docker unter Debian 11

  2. So installieren und konfigurieren Sie Docker in Rocky Linux/Centos 8

  3. Wie installiere ich Docker unter Ubuntu 18.04?

  4. So konfigurieren Sie Docker für die Verwendung von Proxy

  5. Wie konfiguriere ich macvtap, damit es Multicast-Pakete korrekt passieren kann?

So installieren und konfigurieren Sie Docker-CE unter Ubuntu 18.04 LTS

So konfigurieren Sie das Netzwerk in Vagrant

So installieren und konfigurieren Sie Kitematic unter Ubuntu Linux

So installieren und konfigurieren Sie Supervisor unter Ubuntu 20.04

So installieren Sie Docker unter Ubuntu 18.04

So konfigurieren Sie Netzwerk-Namespaces in Docker-Containern