Ich habe vor einiger Zeit ein Full-Stack-Node-Projekt durchgeführt und der serverseitige Technologie-Stack war Nginx + Koa + PostgreSQL. Das Einrichten der Umgebung und die Bereitstellung auf CentOS war ziemlich mühsam. Ich habe den Testserver bereitgestellt und dann den Produktionsumgebungsserver bereitgestellt, als dieser online ging. Es handelt sich dabei um eine Menge „körperlicher Arbeit“, die langweilig, kräftezehrend und undankbar ist. Also begannen wir darüber nachzudenken, wie wir diesen Teil der Build- und Bereitstellungsarbeit automatisieren könnten, und kamen zu Docker. Was ist DockerDocker ist eine Virtualisierungstechnologie, die noch leichter ist als eine virtuelle Maschine. Die Entität, die sie virtualisiert, wird Container genannt. Der Container selbst ist eine Sandbox mit isoliertem Umfang. Er enthält nur grundlegende Bibliotheken und die dazugehörigen Dienste, was sehr rationalisiert ist. Sobald der Container ausgeführt wird, ist er nur noch ein Prozess auf dem Host-Computer und belegt nur sehr wenige Ressourcen. Dies schafft die Voraussetzungen für die Ausführung von Containerclustern auf dem Betriebssystem mit hervorragender Bedienbarkeit und Flexibilität. Welche Beziehung besteht zwischen Bildern und Containern? Sie können sich ein Bild als eine Klasse und einen Container als ein Objekt vorstellen. Ein Container wird durch Instanziieren eines Bildes generiert. Natürlich kann ein Bild mehrere Container generieren. Clientseitiger DockerWenn nicht auf dem Server, wie verwenden wir Docker auf dem Client? Docker Desktop kann unter Windows und OSX verwendet werden, ebenso wie Kitematic. Beides sind Desktop-Verwaltungstools, die für allgemeine Vorgänge sehr praktisch sind. Docker Desktop und Kitematic visualisieren nur einige Vorgänge, und die Befehlszeile ist weiterhin erforderlich, da viele Vorgänge nur mithilfe der Befehlszeile ausgeführt werden können. Grundlegende Docker-Operationen BildnameIn Bezug auf das Image-Tag beispielsweise nginx:1.19.0-alpine ist 1.19.0 die Versionsnummer von nginx und alpine der Codename des Betriebssystems.
Alpine ist die kleinste Version und einige sind sogar ein Viertel so groß wie andere Versionen. Dies bedeutet, dass Images schneller erstellt werden und effizienter ausgeführt werden, da weniger Komponenten geladen werden, was wiederum weniger Schwachstellen und mehr Sicherheit bedeutet. Ziehen Sie das BildDocker-Pull Nginx:1.19.0-Alpine Starten des Containers
docker run --name web -p 8080:80 -v /usr/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx:1.19.0-alpine Andere Operationen
Docker-DateiEine bequemere Möglichkeit zum Erstellen eines Images ist die Verwendung von Dockerfile, der Konfigurationsdatei des Images. Solange Sie über Dockerfile verfügen, können Sie das Image jederzeit erstellen. Das Folgende ist zum Erstellen eines sehr einfachen Nginx-Images gedacht. Das während der Erstellung verwendete Basis-Image ist: VON nginx KOPIEREN Sie nginx.conf /etc/nginx/nginx.conf Docker-ComposeWenn unser Projekt nicht nur über einen einzigen Container verfügt, sondern mehrere Container ausführen muss und die Container miteinander kommunizieren müssen, werden leistungsfähigere Verwaltungstools benötigt. Beispielsweise k8s, aber für unser aktuelles kleines Projekt reicht das offizielle Docker-Compose aus. Zunächst benötigen Sie eine Konfigurationsdatei docker-compose.yml. Das Folgende ist beispielsweise eine Vorlage für zwei Container. Image gibt das verwendete Image an, Ports die Portzuordnung und Volumes die Datenvolumes, die zugeordnet werden müssen: Version: "3" Leistungen: Webanwendung: Bild: Web Häfen: - „8080:80“ Bände: - "/Daten" Redis: Bild: „redis:alpine“ Anschließend können Sie die folgende Kommandozeile verwenden: docker-compose build [Optionen] [SERVICE...] #Erstellen (Neuaufbau) des Service-Containers im Projekt docker-compose up -d # Ausführen des Compose-Projekts, Ausführung im Hintergrund docker-compose up ist ein sehr leistungsfähiger Befehl, der versucht, eine Reihe von Vorgängen automatisch abzuschließen, darunter das Erstellen von Images, das (Neu-)Erstellen von Diensten, das Starten von Diensten und das Zuordnen von dienstbezogenen Containern. Die verknüpften Dienste werden automatisch gestartet, sofern sie nicht bereits ausgeführt werden. Man kann sagen, dass man in den meisten Fällen ein Projekt direkt über diesen Befehl starten kann. Erstellen Sie das Projekt nginx-node-postgresMit der oben genannten Grundlage können wir dann unser eigenes Projekt erstellen. Zunächst führt das Dockerfile des Knotendienstes hauptsächlich die folgenden Schritte aus
VON Knoten:14.5.0-alpine3.12 # Arbeitsverzeichnis WORKDIR /usr/src/app # Kopieren Sie die Konfigurationsdatei COPY package*.json ./ KOPIEREN Sie process.yml ./ Führen Sie npm set registry https://registry.npm.taobao.org/ aus \ && npm install pm2 -g \ && npm installieren # Verwenden Sie pm2, um CMD zu verwalten ["pm2-runtime", "process.yml", "--only", "app", "--env", "production"] EXPOSE 3010 Konfigurieren Sie dann docker-compose.yml
Version: '3' Leistungen: db: Bild: postgres:12.3-alpine Containername: postgres Umfeld: - TZ=Asien/Shanghai – POSTGRES_PASSWORD=xxxx Bände: - ./postgres/data:/var/lib/postgresql/data - ./postgres/init:/docker-entrypoint-initdb.d Häfen: -5432:5432 Neustart: immer #Immer neu starten, die empfohlene Konfiguration in der Produktionsumgebung ist immer exponieren: - 5432 App: Bild: koa-pg Containername: Koa Bände: - ./dist:/usr/src/app/dist - ./logs:/usr/src/app/logs bauen: ./ Umfeld: - TZ=Asien/Shanghai Neustart: immer hängt ab von: -db Links: -db exponieren: - 3010 nginx: Bild: nginx:1.19.0-alpine Containername: nginx Bände: - ./nginx.conf:/etc/nginx/nginx.conf Häfen: -8080:80 Umfeld: - TZ=Asien/Shanghai Neustart: immer hängt ab von: - App Links: # Hostname statt IP zum Konfigurieren der Nginx-Weiterleitung - App exponieren: - 8080 Nachdem wir unser Projekt konfiguriert haben, besteht der nächste Schritt darin, es auszuführen Docker-Compose-Up - Entwicklerhandbuch für Windows Dies ist auf unserem lokalen Entwicklungscomputer der Fall und auch beim Bereitstellen auf einem Server. Sie können so viele Server bereitstellen, wie Sie möchten. Solange Docker installiert ist, kann dies mit nur einer Befehlszeile gelöst werden. Um ein paar Container zu starten, ändern Sie die Konfiguration von docker-compose.yml und führen Sie docker-compose up erneut aus. So einfach! Dies ist das Ende dieses Artikels über die Schritte zum Erstellen und Bereitstellen eines Node-Projekts mit Docker. Weitere Informationen zum Erstellen und Bereitstellen von Node mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der häufig verwendeten integrierten Anweisungen von Vue
>>: Hinweise zum passenden MySql 8.0 und entsprechenden Treiberpaketen
Inhaltsverzeichnis 1. Was ist eine berechnete Eig...
Inhaltsverzeichnis Was ist LocalStorage Was ist S...
Vorwort Da für den Upload des Miniprogramms https...
Schritt 1: Ubuntu-Quelle hinzufügen Wechseln Sie ...
Inhaltsverzeichnis 1. Datenbankübersicht 1.1 Entw...
In diesem Artikel wird der spezifische Code von J...
1 Installation Laden Sie die entsprechende entpac...
MySQL ist ein beliebtes Open-Source-Datenbankverw...
Inhaltsverzeichnis 1. Übersicht 2. Speicherverwal...
Inhaltsverzeichnis Zabbix benutzerdefinierte Über...
Beschränken Sie die Nutzung Wenn wir Abfrageanwei...
Thema Heute werde ich Ihnen zeigen, wie Sie mit C...
Inhaltsverzeichnis Zweck der Tabelle Zum Beispiel...
Ergebnisse erzielen Umsetzungsideen Der Schmelzef...
Inhaltsverzeichnis Lassen Sie uns zunächst über d...