Von der Entwicklung bis zur Bereitstellung: Machen Sie es selbst Wenn wir eine Single-Page-Anwendung entwickeln, nach der Ausführung des Builds npm-Ausführung erstellen Im Verzeichnis „dist“ wird eine index.html generiert. Wie stellen Sie diese index.html auf dem Server bereit? Verzeichnisstruktur
Konfigurieren Sie Nginx Lassen Sie mich über einige Konfigurationen sprechen. Erstens komprimiert Gzip Ressourcen, um Bandbreite zu sparen und die Ladegeschwindigkeit des Browsers zu erhöhen. Obwohl Webpack bereits das Generieren von .gz-komprimierten Paketen zur Build-Zeit unterstützt, kann es auch über Nginx aktiviert werden. gzip an; gzip_disable "msie6"; # 0-9 Ebenen, je höher die Ebene, desto kleiner das komprimierte Paket, aber desto höher die Anforderung an die Serverleistung gzip_comp_level 9; gzip_min_länge 100; # Gzip unterstützt keine komprimierten Bilder, wir müssen nur die Front-End-Ressourcen gzip_types text/css application/javascript komprimieren; Dann gibt es die Konfiguration des Service-Ports, der die API per Reverse-Proxy an den Backend-Service weiterleitet. Server { hören Sie 8080; Servername www.frontend.com; root /usr/share/nginx/html/; Standort / { Index Index.html Index.htm; Versuchen Sie, Dateien $uri $uri/ /index.html zu versuchen. # Deaktivieren Sie das Zwischenspeichern von HTML, um sicherzustellen, dass auf die neuesten CSS- und JS-Ressourcen verwiesen wird. Läuft ab -1; } Standort /api/v1 { Proxy-Passwort http://backend.com; } } Die komplette Konfiguration sieht so aus Arbeiterprozesse 1; Ereignisse { Worker_Connections 1024; } http { ## # Grundeinstellungen ## sendfile an; tcp_nopush ein; tcp_nodelay ein; KeepAlive-Timeout 65; Typen_Hash_max_Größe 2048; /etc/nginx/mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; ## # Protokollierungseinstellungen ## Zugriffsprotokoll /var/log/nginx/access.log; Fehlerprotokoll /var/log/nginx/error.log; ## # Gzip-Einstellungen ## gzip an; gzip_disable "msie6"; gzip_comp_level 9; gzip_min_länge 100; gzip_types Text/CSS-Anwendung/Javascript; Server { hören Sie 8080; Servername www.frontend.com; root /usr/share/nginx/html/; Standort / { Index Index.html Index.htm; Versuchen Sie, Dateien $uri $uri/ /index.html zu versuchen. läuft ab -1; } Standort /api/v1 { Proxy-Passwort http://backend.com; } } } Docker konfigurieren Hier ist ein einfaches Beispiel. Basierend auf dem Basisabbild kopieren Sie die nginx.conf und index.html, die wir in das Abbild geschrieben haben. VON nginx:alpine KOPIEREN Sie nginx.conf /etc/nginx/nginx.conf KOPIEREN Sie dist /usr/share/nginx/html Schreiben eines Makefiles Nachdem Sie die oben genannten Vorbereitungen abgeschlossen haben, können Sie Befehle zum Ausführen der Image-Paketierung schreiben. Geben Sie dem Image zunächst einen Namen und eine Portnummer APP_NAME = spa_nginx_docker PORT = 8080 Verpacken von Bildern durch Build bauen: cp docker/Dockerfile. cp docker/nginx.conf . Docker-Build -t $(APP_NAME). rm Docker-Datei rm nginx.conf Starten Sie das Image durch Bereitstellen einsetzen: docker run -d -it -p=$(PORT):$(PORT) --name="$(APP_NAME)" $(APP_NAME) Zum Schluss gibt es noch einen Stopp, um anzuhalten und das Bild zu bereinigen. stoppen: Docker-Stopp $(APP_NAME) Docker rm $(APP_NAME) Docker RMI $(APP_NAME) Die komplette Konfiguration sieht so aus APP_NAME = spa_nginx_docker PORT = 8080 bauen: cp docker/Dockerfile. cp docker/nginx.conf . Docker-Build -t $(APP_NAME). rm Docker-Datei rm nginx.conf einsetzen: docker run -d -it -p=$(PORT):$(PORT) --name="$(APP_NAME)" $(APP_NAME) stoppen: Docker-Stopp $(APP_NAME) Docker rm $(APP_NAME) Docker RMI $(APP_NAME) Der vollständige Befehl sieht folgendermaßen aus: # Statischer Ressourcenaufbau npm run build # Image-Verpackung erstellen # Stoppen und das alte Image löschen (kann beim ersten Mal ignoriert werden) halt machen # Image-Startup make deploy Zusammenfassen Die aktuelle Bereitstellungsmethode ist relativ einfach. Die Verwendung grundlegender Bilder und Bild-Repositorys wird später hinzugefügt. Lassen Sie uns zunächst den weiteren Weg erkunden. Das könnte Sie auch interessieren:
|
<<: Nodejs-Fehlerbehandlungsprozessaufzeichnung
>>: Lösung für das Datenasymmetrieproblem zwischen MySQL und Elasticsearch
Der ECS-Cloud-Server, der mit dem historischen Li...
KVM steht für Kernel-based Virtual Machine und is...
Inhaltsverzeichnis MySQL Master-Slave-Replikation...
Als ich kürzlich an Überwachungsgeräten arbeitete...
Folgendes ist passiert. Heute habe ich mit GitHub...
1. MS SQL SERVER 2005 --1. Löschen Sie das Protok...
In diesem Artikel wird der spezifische JavaScript...
CSS-Benennungsregeln Header: Header Inhalt: Inhalt...
Frage Lassen Sie mich zunächst über das Problem s...
Ich habe vor Kurzem ein Mac-System verwendet und ...
1. Installieren Sie Apache $ sudo apt update &...
Rendering-Pipeline mit externen CSS-Dateien In de...
Ein Systemadministrator kann mehrere Server gleic...
Durch E-Mail-Marketing auf Genehmigungsbasis lass...
Nachfolgend finden Sie die Schnellbefehle zum Fre...