Versuchen Sie Docker+Nginx, um die Single-Page-Anwendungsmethode bereitzustellen

Versuchen Sie Docker+Nginx, um die Single-Page-Anwendungsmethode bereitzustellen

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

  • dist/: statische Dateien, nachdem das Frontend erstellt wurde
  • docker/: für das Image benötigte Konfigurationsdateien

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:
  • Docker erstellt eine Nginx+PHP+MySQL-Umgebung und implementiert WordPress-Praxis
  • So stellen Sie nginx mit Docker bereit und ändern die Konfigurationsdatei
  • Docker für Anfänger und detaillierte Schritte zum Bereitstellen von NGINX
  • Docker nginx Beispielmethode zum Bereitstellen mehrerer Projekte
  • Docker-Bereitstellung - Nginx-Implementierungsprozess - Grafik und Text - detaillierte Erläuterung
  • Docker stellt Nginx bereit und konfiguriert Reverse-Proxy
  • Implementierungsmethode für die Produktion und Bereitstellung von Docker Nginx-Containern
  • So stellen Sie Nginx auf Docker bereit

<<:  Nodejs-Fehlerbehandlungsprozessaufzeichnung

>>:  Lösung für das Datenasymmetrieproblem zwischen MySQL und Elasticsearch

Artikel empfehlen

Lösungen zur Verarbeitung und Reparatur historischer Linux-Images

Der ECS-Cloud-Server, der mit dem historischen Li...

Erstellen einer KVM-Virtualisierungsplattform auf CentOS7 (drei Möglichkeiten)

KVM steht für Kernel-based Virtual Machine und is...

Implementierungsschritte der MySQL-Master-Slave-Replikation

Inhaltsverzeichnis MySQL Master-Slave-Replikation...

So verwenden Sie Filter zur Implementierung der Überwachung in Zabbix

Als ich kürzlich an Überwachungsgeräten arbeitete...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Zusammenfassung der Namenskonventionen für HTML und CSS

CSS-Benennungsregeln Header: Header Inhalt: Inhalt...

Die Lösung von html2canvas, dass Bilder nicht normal erfasst werden können

Frage Lassen Sie mich zunächst über das Problem s...

Wie CSS die Zeit des weißen Bildschirms während des ersten Ladens beeinflusst

Rendering-Pipeline mit externen CSS-Dateien In de...

Vorschläge zum Erstellen geschäftlicher HTML-E-Mails

Durch E-Mail-Marketing auf Genehmigungsbasis lass...

So geben Sie Speicherplatz unter CentOS 6 oder CentOS 7 frei

Nachfolgend finden Sie die Schnellbefehle zum Fre...