Hallo, ich frage mich, ob es möglich ist, beim Start des Docker-Containers zwei Skripte gleichzeitig automatisch auszuführen. Das erste Skript muss die Clientanwendung und das zweite die Serveranwendung als Hintergrund ausführen.

3
ProgShiled 18 Jän. 2019 im 01:09

3 Antworten

Beste Antwort

Wie bereits erwähnt, ist es keine empfohlene Vorgehensweise, mehrere Prozesse zu haben.

In einigen Szenarien müssen jedoch mehrere Prozesse vorhanden sein. In diesen Fällen besteht der übliche Ansatz darin, einen Prozessmanager wie Supervisor zu verwenden.

1
Gonzalo Matheu 17 Jän. 2019 im 23:50

Sie können CMD in Ihrem Dockerfile verwenden und verwenden Sie command &, um Führen Sie zwei Befehle parallel aus:

CMD server_command & client_command

(Dabei ist server_command der Befehl zum Starten des Servers und client_command der Befehl zum Starten des Clients.)

1
Itai Steinherz 17 Jän. 2019 im 22:37

Dockers offizielle Haltung dazu war immer, dass es am besten ist, nur einen einzigen Dienst in einem Container laufen zu lassen. Allerdings verfügen sie auch über eine sehr robuste Dokumentation, die mögliche Lösungen für die Integration mehrerer Dienste in einen einzigen Container enthält.

https://docs.docker.com/config/containers/multi-service_container/

Eine kurze Zusammenfassung ist im Wesentlichen, dass Sie, wenn Sie über mehrere Dienste verfügen, eine Art "Init" -Prozess benötigen, um als übergeordnetes Element für alle Dienste im Container zu fungieren.

Es gibt zwei Möglichkeiten, dies zu tun:

  1. Haben Sie ein Shell-Skript, das jeden Dienst als Hintergrundjob ausführt.
  2. Starten Sie ein vollständiges Init-System im Container und starten Sie die Dienste darunter.

Beides ist problematisch. Das erste, weil Bash kein Init-System ist und Sie alle Arten von Kopfschmerzen bekommen können, wenn es sich nicht wie eines verhält. Das zweite, weil ein Init-System eine ziemlich schwere Sache ist, um es in einen Docker-Container zu packen.

Trotzdem ist die beste Lösung, Ihre Dienste in zwei Container aufzuteilen.

1
Swiss 17 Jän. 2019 im 23:25