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
Docker wird in immer mehr Szenarien verwendet. Fü...
Diese Frage stammt aus einer Nachricht auf Nugget...
Umsetzungsprinzip Die Hauptgrafik besteht aus zwe...
Inhaltsverzeichnis Sonderzeichen in URLs Escapeze...
Kommentare und Nachrichten waren ursprünglich ein...
Inhaltsverzeichnis 1. Abhängigkeiten installieren...
Vorwort: rm unter Linux-Systemen ist irreversibel...
Einstellungen für die Transaktionsisolationsebene...
Die Verwendung der ElementUI-Paging-Komponente Pa...
ClickHouse ist ein spaltenorientiertes Open-Sourc...
Nehmen wir ein Benutzerverwaltungssystem an, bei ...
In diesem Artikelbeispiel wird der spezifische Ja...
Inhaltsverzeichnis Vorwort Funktionsüberladung Zu...
Ergebnisse erzielenImplementierungscode html <...
1. Formular 1. Die Rolle des Formulars HTML-Formu...