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
Inhaltsverzeichnis 1. Globale Wache 1. Globale Fr...
URL: http://hostname.com/contextPath/servletPath/...
Dieses Tutorial enthält das Installationstutorial...
Erstellen Sie eine neue server.js Garn init -y Ga...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis 1. Subunternehmer für Miniprog...
MySQL 5.7-Installation Wir lernen in der Schule M...
Wenn der Entwickler Dockerfile zum Erstellen des ...
MySQL behandelt GROUP BY- und DISTINCT-Abfragen i...
Laden von Kernelsymbolen mit gdb arm-eabi-gdb out...
xml <?xml version="1.0" encoding=&qu...
Vorwort Der Befehl apt-get ist ein Paketverwaltun...
Inhaltsverzeichnis Umfassender Vergleich Aus der ...
Inhaltsverzeichnis 1. Was ist die Anti-Shake-Funk...
Hintergrund Durch das flexible Layout wird eine e...