1.Schreiben Sie davor: Als leichtgewichtige Virtualisierungstechnologie bietet Docker die Vorteile der kontinuierlichen Integration, Versionskontrolle, Portabilität, Isolation und Sicherheit. In diesem Artikel wird Docker zum Bereitstellen einer Vue-Front-End-Anwendung verwendet. Die Implementierungsideen und spezifischen Schritte werden so detailliert wie möglich vorgestellt, um Studierenden mit ähnlichen Anforderungen das Nachschlagen zu erleichtern. Docker ist eine Open-Source-Container-Engine für Anwendungen, mit der Entwickler ihre Anwendungen und abhängige Pakete in einem portablen Container verpacken können. Der Container enthält den Anwendungscode, die Laufzeitumgebung, abhängige Bibliotheken, Konfigurationsdateien und andere erforderliche Ressourcen. Mit dem Container kann eine bequeme, schnelle und plattformunabhängige Methode zur automatischen Bereitstellung implementiert werden. Unabhängig von der Umgebung, in der Sie bereitstellen, wird die Anwendung im Container in derselben Umgebung ausgeführt. (Weitere Einzelheiten finden Sie auf der offiziellen Docker-Website.) Docker und @vue/cli sind standardmäßig installiert. Verwandte Versionen:
Die Betriebsumgebung ist macOS. Wenn es einen Unterschied zwischen Ihrem Betriebssystem und dem des Readers gibt, passen Sie ihn bitte selbst an Verwandte Bilder:
2. Konkrete Umsetzung:
3. Erstellen Sie eine Vue-Anwendung 3.1 Vue CLI erstellt ein Vue-Projekt Befehl ausführen Garn servieren / npm ausführen servieren Besuchen Sie http://localhost:8081 3.2 Umschreiben Schreiben Sie die Seite leicht um, ändern Sie die an die HelloWorld-Komponente in App.vue übergebene Nachricht in „Hello Docker“ und fügen Sie dem erstellten Lebenszyklus eine Schnittstellenanforderung hinzu importiere Axios von „Axios“; … axios.get('/api/json', { Parameter: {} }).Dann( res => { konsole.log(res); } ).fangen( Fehler => { konsole.log(Fehler); } ) … Zu diesem Zeitpunkt wird in der Seitenkonsole eine Fehlermeldung angezeigt: /api/json-Schnittstelle 404. Natürlich existiert diese Schnittstelle derzeit nicht. Ich werde sie vorerst hier schreiben und diese Schnittstelle später aufrufen. 3.3 Erstellen eines Vue-Projekts Befehl ausführen Garn-Build / NPM-Run-Build Zu diesem Zeitpunkt gibt es eine zusätzliche Ordner Wenn Sie das gesamte „Dist“-Verzeichnis auf den Server übertragen und als statische Ressourcensite bereitstellen, können Sie direkt auf das Projekt zugreifen. Als Nächstes erstellen wir eine solche statische Ressourcensite. 4 Erstellen Sie das Vue-Anwendungsimage nginx ist ein leistungsstarker HTTP- und Reverse-Proxy-Server. Hier verwenden wir das nginx-Image als Grundlage zum Erstellen unseres Vue-Anwendungsimages. 4.1 Holen Sie sich das Nginx-Image Docker-Pull Nginx
4.2 Erstellen Sie eine Nginx-Konfigurationsdatei Erstellen Sie einen Server { hören Sie 80; Servername localhost; #Zeichensatz koi8-r; Zugriffsprotokoll /var/log/nginx/host.access.log Haupt; error_log /var/log/nginx/error.log Fehler; Standort / { root /usr/share/nginx/html; Index Index.html Index.htm; } #Fehlerseite 404 /404.html; # Server-Fehlerseiten auf die statische Seite /50x.html umleiten # Fehlerseite 500 502 503 504 /50x.html; Standort = /50x.html { root /usr/share/nginx/html; } } Diese Konfigurationsdatei definiert, dass die Homepage auf 4.3 Erstellen eines Dockerfiles VON nginx KOPIEREN Sie dist/ /usr/share/nginx/html/ KOPIEREN Sie nginx/default.conf /etc/nginx/conf.d/default.conf
4.4 Erstellen Sie ein Vue-Anwendungsimage basierend auf der Docker-Datei Führen Sie den Befehl aus (beachten Sie, dass der letzte „.“ fehlt). Docker-Build -t vuenginxcontainer. Zeigen Sie das lokale Image an und führen Sie den Befehl aus Docker-Image ls | grep vuenginxcontainer
Container. 4.5 Starten Sie den Vue-App-Container Docker-Container: Die Entität zur Laufzeit des Images. Die Beziehung zwischen einem Bild und einem Container ähnelt der zwischen einer Klasse und einer Instanz in der objektorientierten Programmierung. Ein Bild ist eine statische Definition und ein Container ist eine Entität zur Laufzeit des Bildes. Container können erstellt, gestartet, gestoppt, gelöscht, angehalten usw. werden. Starten Sie den Container basierend auf dem vuenginxcontainer-Image und führen Sie den Befehl aus: Docker-Ausführung \ -p 3000:80 \ -d --name vueApp \ Abonnieren docker run startet einen Container basierend auf einem Image Docker PS Sie können feststellen, dass der Container mit dem Namen vueApp bereits ausgeführt wird. Besuchen Sie jetzt http://localhost:3000 Sie sollten auf die Vue-Anwendung zugreifen können: Bisher wurde ein statischer Ressourcendienst über den 5 Schnittstellendienste Bereitstellen eines weiteren Knotencontainers zur Bereitstellung von Schnittstellendiensten 5.1 Express-Service Verwenden Sie das Node Web Framework „streng verwenden“; const express = erfordern('express'); konstanter PORT = 8080; const HOST = "0.0.0.0"; const app = express(); app.get('/', (req, res) => { res.send('Hallo Welt\n'); }); app.get('/json', (req, res) => { res.json({ Code: 0, Daten: „Dies ist eine Nachricht vom Knotencontainer“ }) }); app.listen(PORT, HOST); console.log(`Läuft auf http://${HOST}:${PORT}`); Zum Ausführen der 5.2 Holen Sie sich Docker-Pull-Knoten 5.3 Schreiben Sie eine Docker-Datei, um die FROM-Knoten ARBEITSVERZEICHNIS /usr/src/app KOPIEREN Sie Paket*.json ./ Führen Sie npm install aus KOPIEREN . . EXPOSE 8080 CMD [ "npm", "start" ] Beim Erstellen des Images werden die node_modules-Abhängigkeiten direkt über Knotenmodule npm-debug.log 5.4 NodeWebServer-Image erstellen Führen Sie den Build-Befehl aus: Docker-Build -t NodeWebServer. 5.5 Starten Sie den Nodeserver-Container Basierend auf dem soeben erstellten nodewebserver-Image starten Sie einen Container mit dem Namen nodeserver, um den Schnittstellendienst-Port 8080 bereitzustellen und den Port 5000 des Hosts zuzuordnen. Docker-Ausführung \ -p 5000:8080 \ -d --name Knotenserver \ Knotenwebserver Den aktuellen Docker-Prozess anzeigen Docker PS Es kann festgestellt werden, dass der Nodeserver-Container auch normal läuft. Besuchen Sie die folgende Adresse: http://localhost:5000/json Kann auf die zuvor geschriebenen JSON-Daten zugreifen Bisher wurde auch der Backend-Schnittstellendienst normal gestartet. Der Aufruf der Schnittstelle erfolgt durch eine einfache Weiterleitung der Seitenanforderungsschnittstelle an den Backend-Schnittstellendienst. 6. Domänenübergreifende Weiterleitung Ich möchte Anfragen im VueApp-Container an den Nodeserver-Container weiterleiten. Zunächst müssen Sie die 6.1 Zeigen Sie die IP-Adresse des Nodeserver-Containers an: Es gibt mehrere Möglichkeiten, die interne Betreten Sie den Container, um ihn anzuzeigen Docker ausführen -it 02277acc3efc bash Katze /etc/hosts docker inspect [containerId] um Containerinformationen direkt anzuzeigen: Docker-Inspektion 02277acc3efc Suchen Sie nach netzwerkbezogenen Konfigurationsinformationen: Notieren Sie die dem Knotendienstcontainer entsprechende IP-Adresse, die beim Konfigurieren der Nginx-Weiterleitung verwendet wird. 6.2 Nginx-Konfiguration ändern Nginx konfiguriert den Standort so, dass er auf den Knotendienst default.conf verweist. (Front-End-Benutzer, die mehr über Nginx erfahren möchten, finden Einzelheiten zur Nginx-Konfiguration und zum Standort unter „Nginx-Standortabgleich in einem Artikel verstehen“.) Fügen Sie eine Umschreibregel hinzu, um /api/{path} zur /{path}-Schnittstelle des Zieldienstes umzuleiten. Fügen Sie der vorherigen Datei nginx/default.conf Folgendes hinzu: Standort /api/ { /api/(.*) /$1 break neu schreiben; Proxy-Passwort http://172.17.0.2:8080; } Nach der Änderung ist mir ein Problem aufgefallen: Der VueApp-Container wird basierend auf dem Vuenginxcontainer-Image ausgeführt, und als das Image zum ersten Mal erstellt wurde, war die Nginx-Konfiguration default.conf direkt darin integriert. Wenn Sie default.conf ändern müssen, müssen Sie daher ein neues Image neu erstellen und dann einen neuen Container basierend auf dem neuen Image ausführen. 7. Verbesserungen Ist es möglich, die neue Konfiguration wirksam zu machen, indem der Container bei jeder Änderung der Konfigurationsdatei einfach neu gestartet wird? Die Antwort ist natürlich ja. Beim Erstellen des Images wird die Nginx-Konfiguration nicht in das Image kopiert, sondern direkt auf dem Host gemountet. Nach jeder Konfigurationsänderung muss der Container einfach neu gestartet werden. 7.1 Ändern des Dockerfiles Ändern Sie das Dockerfile unter dem Vueclidemo-Projekt VON nginx KOPIEREN Sie dist/ /usr/share/nginx/html/ KOPIEREN Sie nginx/default.conf /etc/nginx/conf.d/default.conf Löschen Sie den Befehl 7.2 Führen Sie den Vue-Anwendungscontainer erneut aus Starten Sie den Container vuenginxnew direkt basierend auf dem Nginx-Image und führen Sie den Befehl aus: Docker-Ausführung \ -p 3000:80 \ -d --name vuenginxnew \ --mount Typ=Binden,Quelle=$HOME/SelfWork/Docker/vueclidemo/nginx,Ziel=/etc/nginx/conf.d \ --mount Typ=Binden,Quelle=$HOME/SelfWork/Docker/vueclidemo/dist,Ziel=/usr/share/nginx/html \ nginx
Auf diese Weise müssen Sie jedes Mal, wenn Sie die Nginx-Konfiguration ändern oder die Vue-Anwendung neu erstellen, nur den Container neu starten, damit die Änderungen sofort wirksam werden. Wenn wir zu diesem Zeitpunkt http://localhost:3000/api/json erneut besuchen, können wir sehen, dass die Schnittstelle normal zurückkehren kann, was darauf hinweist, dass die Weiterleitung effektiv ist. An dieser Stelle wurde auch die Weiterleitung des Schnittstellendienstes angepasst. 7.3 Lastenausgleich konfigurieren Um die Dienststabilität zu gewährleisten, werden Backend-Dienste im Allgemeinen auf zwei oder mehreren Maschinen ausgeführt. Wir können einen weiteren Back-End-Service-Container starten und die Starten Sie einen neuen Container basierend auf den ähnlichen Vorgängen in Abschnitt 4.5 und überprüfen Sie die IP-Adresse des neuen Containers (172.17.0.3) basierend auf den ähnlichen Vorgängen in Abschnitt 5.1. Ändern Sie Upstream-Backend { Server 172.17.0.2:8080; Server 172.17.0.3:8080; } … Standort /api/ { /api/(.*) /$1 break neu schreiben; Proxy_Pass-Backend; } 8. Schreiben Sie am Ende Studierende, die mit der Befehlszeile nicht vertraut sind, können Kitematic wählen, um den Status, das Datenverzeichnis und das Netzwerk von 9 Fazit Docker bietet eine äußerst leistungsfähige Methode zur automatisierten Bereitstellung und Flexibilität, entkoppelt mehrere Anwendungen und sorgt für Entwicklungsflexibilität, Steuerbarkeit und Portabilität. Dieser Artikel verwendet das Vue-Projekt als Beispiel, um die vollständigen Schritte zum Bereitstellen eines Front-End- und Back-End-Projekts mit Docker zu implementieren. Ich hoffe, dass er Studenten, die Docker verwenden möchten, eine Hilfe sein kann. Verweise Offizielle Docker-Website Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Lösung für das Problem ungenauer JS-Zahlen
>>: Installations-Tutorial für MySQL 8.0.15-Version: Verbindung zu Navicat.list herstellen
<!doctype html> <html xmlns="http:/...
Inhaltsverzeichnis Vorwort Text 1. Abschluss 1.1 ...
Inhaltsverzeichnis Webkomponenten benutzerdefinie...
1. Quellcode entwerfen Code kopieren Der Code laut...
„HTML-Validierung“ bezieht sich auf die HTML-Valid...
Ich habe vor kurzem ein kleines Programmierprojek...
Vertieftes Verständnis davon in Js JavaScript Ber...
Hallo zusammen, heute möchte ich Ihnen zeigen, wi...
Umfeld Hostname IP-Adresse Aufschlag Jenkins 192....
System: Ubuntu 16.04LTS 1\Laden Sie mysql-5.7.18-...
Inhaltsverzeichnis Ergebnisse erzielen Wissensres...
Anwendungsszenarien: Die Seiten des Projekts müss...
Detailliertes Beispiel für das Datenbankbetriebso...
In diesem Artikelbeispiel wird der spezifische Co...
Ergebnisse erzielen Umsetzungsideen Der Schmelzef...