Voraussetzung: Celery wird in Django eingeführt. Wie kann beim Starten des Django-Projekts auch der Celery-Dienst gestartet werden? Beginnen Sie mit der Verwendung des ENTRYPOINT-Befehls 1. Schreiben Sie das Dockerfile VON centos:7 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL zh_CN.UTF-8 KOPIEREN ./hrms $CODE_DIR/hrms/ KOPIEREN ./run $CODE_DIR/run/ AUSFÜHREN chmod a+x $CODE_DIR/run/* RUN pip3 install -r $CODE_DIR/hrms/requirements.txt EXPOSE 8080 ARBEITSVERZEICHNIS /opt/hrms/hrms/ Sie müssen das Obige nicht lesen, der Schlüssel ist, sich den folgenden Befehl anzusehen #Starten Sie einen Dienst mit CMD# CMD ["python3.5", "/opt/hrms/hrms/manage.py", "runserver", "0.0.0.0:8080"] #Wenn Sie mehrere Dienste starten, können Sie CMD verwenden, um ein Skript auszuführen und mehrere Dienste in der Skript-CMD-Quelle /opt/hrms/run/entrypoint.sh zu starten. #Wenn Sie mehrere Dienste starten, können Sie ENTRYPOINT auch verwenden, um ein Skript auszuführen und mehrere Dienste im Skript ENTRYPOINT ["/opt/hrms/run/entrypoint.sh"] zu starten. Der Unterschied zwischen CMD und ENTRYPOINT besteht darin, dass der CMD-Befehl durch den Befehl in der Datei docker-compose.yml überschrieben werden kann. Sobald der Befehl angegeben ist, wird der CMD-Befehl nicht mehr ausgeführt, während ENTRYPOINT niemals überschrieben werden kann. Also können wir hier Folgendes tun: Verwenden Sie CMD, um ein Skript zu starten, und starten Sie dann mehrere Dienste im Skript, z. B. Django, Celery usw. Wenn Sie nur eine Datenbankmigration durchführen möchten, können Sie python manage.py migrate im Befehl in der Datei docker-compose.yml ausführen, sodass der CMD-Befehl nicht ausgeführt wird und nur die Datenbankmigration ausgeführt wird. 2. entrypoint.sh Skriptdatei #!/bin/bash #Django starten python3.5 /opt/hrms/hrms/manage.py runserver 0.0.0.0:8080 & #Starten Sie den Arbeiter celery worker -A celery_tasks.main -l info -f /opt/hrms/logs/celery.log & #Beachten Sie, dass der Protokollspeicherort in einem absoluten Pfad geschrieben werden muss#Start beat Sellerie-Beat -A celery_tasks.main -l info Hinweis: Die ersten beiden Dienste müssen im Hintergrund ausgeführt werden, d. h., fügen Sie danach ein & ein, und der letzte Dienst muss im Vordergrund ausgeführt werden. Andernfalls wird, wenn alle im Vordergrund ausgeführt werden, nur der erste Dienst gestartet; wenn alle im Hintergrund ausgeführt werden, wird der Container beendet, wenn der letzte Dienst ausgeführt wird. Zusatzwissen: Nutzung von Dockerfile CMD Drei CMD-Formate:
Notiz: Das obige Exec-Formular wird in ein JSON-Array analysiert, was bedeutet, dass Sie doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden müssen. Das Exec-Formular ruft die Befehlsshell nicht auf. Beispielsweise wird in CMD [ "echo", "HOME"] die Variable HOME nicht ersetzt. Wenn Sie die Shell verwenden möchten, sollte es so aussehen: CMD [ "sh", "-c", "echo $HOME" ] In einem Dockerfile sollte nur ein CMD vorhanden sein. Wenn es mehrere gibt, wird nur das letzte ausgeführt. Beispiele für die Formatverwendung:
oder
Der obige Artikel darüber, wie man mit dem CMD- oder ENTRYPOINT-Befehl mehrere Dienste gleichzeitig in Docker startet, ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Die Prinzipien und Mängel der MySQL-Volltextindizierung
>>: Hinweise zur Verwendung des Blockquote-Tags
Enctype: Gibt den Kodierungstyp an, der vom Browse...
1. Installieren Sie Python 3 1. Installieren Sie ...
Excel ist das am häufigsten verwendete Tool zur D...
Inhaltsverzeichnis Variablenbereich Das Konzept d...
Swap-Speicher bedeutet hauptsächlich, dass das Sy...
Zur Aufzeichnung: Es kann in Zukunft verwendet we...
Dieser Artikel verwendet die Lizenzvereinbarung „...
Grundlegende Einführung Merkmale Flexbox ist ein ...
Dieser Artikel veranschaulicht anhand eines Beisp...
In diesem Artikel wird der spezifische Code von j...
/******************** * Virtuelles Dateisystem VF...
Einführung in AOP Die Hauptfunktion von AOP (Aspe...
Optimierungsideen Es gibt zwei Hauptoptimierungsr...
Vorwort Die Datenbank war schon immer meine Schwa...
Ein Wort vorab: Plötzlich erhielt ich die Aufgabe...