Code God Road Blog Deployment Tutorial [Vollversion] | Linux-basiertes Docker Deployment Tutorial | Sehr detailliert

veranschaulichen

  • Vorwort: Ich habe kürzlich ein SpringBoot-Trainingsprojekt mit der Straße von Biz Station Code God gemacht. Ich bin bei der ersten Operation auf viele Schwierigkeiten und Probleme gestoßen, insbesondere im Deployment-Teil, ich bin viele Umwege gegangen. Hier schreibe ich mein eigenes Deployment auf Prozess für alle. Als Referenz können Sie auch gerne Ihre wertvollen Kommentare einbringen.
  • Signalton-Stationscode Gott Videolink: https://www.bilibili.com/video/BV1Gb4y1d7zb?p=36
  • Meine Website: www.zhangshidi.space (kann nach einer Weile auf andere Inhalte aktualisiert werden~)
  • Es ist nicht einfach zu erstellen, ich hoffe, Sie kommen alle vorbei und geben ihm einen Daumen nach oben.
  • Einige Anweisungen können falsch sein, Sie können es manuell tun (in dem Tutorial, das ich gelesen habe, wird mkdir zum Beispiel verwendet, um Dateien wie blog.conf zu erstellen, aber es gibt ein Problem mit dem Dateiformat und es wird immer ein Suffix haben wie blog.conf.swp Was, dann erstelle ich manuell eine neue Datei im Dateiverzeichnis auf der linken Seite und stellte später fest, dass die neue Datei erfolgreich per Berührung erstellt werden kann; mkdir ist besser, um einen Ordner zu erstellen)

Vorwissen

  • Die folgenden Wissenspunkte hoffen, dass Sie zuerst suchen und lesen und ein allgemeines Verständnis haben.
    • Was ist Linux und einige grundlegende Anweisungen, um Linux zu beherrschen.
    • Was ist Docker, das Prinzip der Docker-Bereitstellung
    • was ist nginx
  • was werden wir machen
    • Packen Sie das Vue-Frontend-Projekt auf den Cloud-Server
    • Packen Sie das Springboot-Backend-Projekt (Hauptwebseite, im Folgenden als App bezeichnet) (Backend-Verwaltungssystem, im Folgenden als Admin bezeichnet) auf den Cloud-Server
    • Verwenden Sie Docker, um mysql, redis, ngix, app, admin bereitzustellen. Verwenden Sie dann docker-compose, um eine Servicevereinbarung zu treffen, sodass die Projekte der Reihe nach gestartet werden.

Dateiverzeichnis

  • Wenn Sie meinen Ideen vollständig folgen, können Sie in meinem Dateiverzeichnis nachsehen, ob die Datei nicht korrekt ist.Bildbeschreibung hier einfügen

1 Umgebungsvorbereitung: Serverkauf (und Domainname)

  • Grundlegende Umgebung (Cloud-Server und Domänenname) – tun Sie dies im Voraus !
  • Meine Cloud-Konfiguration: Alibaba Cloud 1 Core 2 GiB-Server + Tencent Cloud-Domänenname.
  • Der Cloud-Server entspricht unserem Zweitrechner, steht aber in der Cloud. Aufgrund seiner Beziehung zur Cloud können wir ihn nach Belieben belästigen. Wenn es ein größeres Problem gibt, können wir das System direkt neu installieren, ohne Schaden anzurichten auf unseren Computer selbst. Einfluss.
    • Zuerst brauchen wir einen Cloud-Server, dann müssen wir einen Cloud-Server kaufen, wenn wir einen Domainnamen brauchen, müssen wir einen Domainnamen kaufen und die Bindung (Auflösung) zwischen dem Domainnamen und der Cloud-Server-IP abschließen die Anschrift. Es ist auch möglich, vorübergehend eine IP-Adresse ohne Domainnamen zu verwenden.
    • Gründe dafür, dies im Voraus zu tun: Da der Domainname eingereicht werden muss, heißt es, dass die Anmeldezeit bis zu einer Woche dauern kann.Mein (normaler Domainname, der in Tencent Cloud gekauft wurde - 10 Jahre 180) ist in Ordnung, und die Die Einreichung ist an einem Tag abgeschlossen. Der Cloud-Server wurde letztes Jahr beim Alibaba Cloud-Event auf Double Eleven im Jahr 2021 gekauft. Was gut und was schlecht ist, ich denke, es sollte ungefähr gleich sein.Ich habe die billigen ausgewählt und gekauft.
    • Nach dem Kauf des Servers muss das Linux-System auf dem Server installiert werden, ich habe mich für die Version centoS 7.8 entschieden.
    • Für die Verwendung dieses Cloud-Servers können wir dann direkt Anweisungen auf dem Cloud-Server eingeben | oder Tools von Drittanbietern wie Xshell verwenden. (Ich verwende xshell, das weniger Fehler hat und flüssiger ist)
    • Bitte suchen Sie selbst nach den oben genannten Schritten.
    • Nachdem Sie diese Schritte abgeschlossen haben, ist es sehr wichtig, Ports zu öffnen.Im Fall von Alibaba Cloud ist es in der Konfiguration von Sicherheitsgruppenregeln, wie Port 8888, Redis-Port, Datenbankport usw., die wir verwenden, sonst kann es sein nicht zugänglich sein.
      Bildbeschreibung hier einfügen

2 Docker-Installation

  • In meinem Verständnis von Docker kann Docker als Container verstanden werden, der einem eher Miniatur-Linux-System entspricht, in dem wir verschiedene Umgebungen und Konfigurationen bereitstellen können.
    • Für genauere Kenntnisse über Docker können wir auf diesen Artikel verweisen: https://blog.csdn.net/weixin_46628200/article/details/106668209

Installation starten

  • Rufen Sie zuerst unser Cloud-Server-Verwaltungspanel auf - Remote-Verbindung, Sie können eine solche leere Seite sehen, und dann geben wir hier verschiedene Befehle ein. Cloud-Server-Betriebsschnittstelle- Wir haben bemerkt, dass es zwei Symbole in der oberen linken Ecke gibt, eines ist [Neues Befehlsfenster]; das andere ist [Visual View File], was fast dasselbe ist, wie wir normalerweise Dateien anzeigen. Manchmal können Sie direkt in der Datei verschieben, wenn Sie zu faul sind, den Kopierbefehl zu verwenden.Gemeinsame Operationen sind schnell

Docker installieren

  • Geben Sie die folgende Reihe von Befehlen Schritt für Schritt in Ihr Befehlsfenster ein
# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
#启动docker
/bin/systemctl start docker.service

Docker-Installation und -Start
Ziehen Sie das Docker-Image

  • Das Docker-Image kann als gewöhnliches Image verstanden werden, und das Docker-Image wird verwendet, um unseren Docker-Container zu erstellen.
  • Geben Sie dennoch den folgenden Befehl in das Befehlsfenster ein
docker pull nginx
docker pull redis:5.0.3
docker pull java:8
docker pull mysql:5.7

3 docker konfigurieren mysql

  • Als Nächstes werde ich Cloud-Server kollektiv als Hosts bezeichnen.

Idee: Erstellen Sie einen Docker, um MySQL zu konfigurieren, und ordnen Sie die MySQL-Datendateien im Host an, was etwas mühsamer ist, aber die Sicherheit verbessert

Bevor Sie mysql konfigurieren, werden Sie hoffentlich zuerst MySQL auf Ihrem eigenen Host installieren und dem Nanny-Level-Mysql-Installationstutorial unter Linux folgen.
Der Grund dafür ist, dass ich die MySQL-Daten auf dem Hostcomputer speichern möchte und im Docker nur eine MySQL-Umgebung konfiguriert ist.Wenn die Datenbankdateien auf dem Docker gespeichert sind, wird der Container gelöscht (über den Befehl rm). , alle Datendateien werden verschwinden. , sehr unsicher.

  • Erstellen Sie ein MySQL-Verzeichnis auf dem Host (Befehl zum Erstellen eines Ordners mkdir, cd ist ein Befehl zum Wechseln des Verzeichnisses)
mkdir -p /mnt/docker/mysql
cd /mnt/docker/mysql
  • Fahren Sie fort und führen Sie die folgenden Befehle im Befehlsfenster aus
    • Welches runhat die Rolle des [Erstellen und Ausführen] des MySQL-Containers
    • -p soll die Zuordnung zwischen dem Port 3307 des Hosts und dem Port 3306 des Containers herstellen
    • -v soll ein Mount-Verzeichnis erzeugen. Mounten kann als Teilen/Synchronisieren eines Dateiverzeichnisses verstanden werden. Das Verzeichnis vor dem Doppelpunkt ist das Host-Verzeichnis und nach dem Doppelpunkt ist das MySQL-Datenverzeichnis im Docker. Auch wenn der Docker gelöscht wird , können die Daten weiterhin auf dem Host im Verzeichnis des Hosts gespeichert werden
      • Es ist erwähnenswert, dass in Code , nämlich Konfigurationsdateien, Protokolle und Datendateien. Ich bekomme im laufenden Betrieb immer wieder Fehler im Log, also konfiguriere ich nur die wichtigsten Datendateien
    • Der nächste Schritt besteht darin, das Standardkennwort des Host-MySQL anzugeben. Wenn das Standardkennwort nicht festgelegt ist, wird möglicherweise ein Fehler gemeldet.
docker run -id \
-p 3307:3306 \
--name=mysql \
-v /mnt/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

Mapping-Dateien mit Mounts

Als nächstes müssen wir den Container betreten und Berechtigungen öffnen

  • docker psÜberprüfen Sie, ob der Container bereits ausgeführt wird
    • Sie sollten sehen, dass der mysql5.7-Container bereits läuft
  • in den Behälterdocker exec -it mysql bash
  • MYSQL in den Containermysql -uroot -p
    • Geben Sie das Passwort wie oben ein, ich habe es als root festgelegt, geben Sie es einfach direkt ein. (Leer wird auf der Oberfläche angezeigt, aber das Passwort wurde bereits eingegeben, drücken Sie zur Bestätigung die Eingabetaste.)
  • Die nächsten Schritte ähneln Schritt 10 der Installation des Hosts mysql oben
    • show databases;
    • use mysql ;
    • show tables;
    • select user,host from user;(Es kann einen SQL-Fehler melden, fügen Sie einfach das Paketfeld `` hinzu)
      • Es ist ersichtlich, dass der Host, der dem Root-Benutzer entspricht, nicht % ist, wir müssen ihn in % ändern, um Berechtigungen zu öffnen.
    • update user set host ='%'where user ='root';
    • update user set host ='%'where user ='root' and host='localhost';
    • Führen Sie am besten beide Sätze aus. In meiner damaligen Situation gab es zwei Root-Benutzer. Das Ergebnis der Ausführung war, dass ein Root, der dem Host entspricht, leer war und der andere Host % war.
    • (Sie können sogar erweiterte Berechtigungen öffnen grant all privileges on *.* to root@'%' identified by 'root' with grant option;)
    • Berechtigungen aktualisierenflush privileges;
  • exitBeenden Sie MySQL und dann exitden MySQL-Container

Überprüfen Sie, ob der Docker-Container von mysql erfolgreich konfiguriert wurde, und sehen Sie sich seine exponierte Docker-IP-Adresse an

  • Verwenden Sie dies docker logs -f mysql, um zu sehen, ob die Konfiguration erfolgreich istBildbeschreibung hier einfügen
  • docker inspect mysql→ Überprüfen Sie die IP-Adresse 172.17.0.2 des entsprechenden mysql-Docker-Containers, bitte merken Sie sich diese Adresse, die für die Paketierungs-Hintergrundanwendung unten benötigt wird.
    Die IP-Adresse des MySQL-Docker-Containers

Nachdem die Umgebung korrekt ist, müssen wir unsere Datenbankdatei blog.sql importieren

  • Wie oben erwähnt, haben wir das Mapping zwischen dem Host - /mnt/docker/mysql/dataVerzeichnis und der /var/lib/mysqlAdresse des Docker-Containers implementiert, dh wenn wir die Datei blog.sql in dieses Verzeichnis des Hosts importieren, erscheint blog.sql auch im entsprechenden Verzeichnis von Docker Nachfolgend sind die spezifischen Operationen wie folgt:
cd /mnt/docker/mysql/data
rz
  • Unter ihnen bedeutet cd, Verzeichnisse zu wechseln, und rz bedeutet, Dateien hochzuladen. An dieser Stelle können wir blog.sql hinein importieren. Als nächstes prüfen wir, ob die Datei im Docker-Container erscheint
  • in den Behälterdocker exec -it mysql bash
  • Wechseln Sie in das Mount-Verzeichniscd /var/lib/mysql
  • Wenn Sie sich alle Dateien lsin diesem Verzeichnis ansehen, können Sie theoretisch sehen, dass sich blog.sql auch in diesem Verzeichnis befindet.
  • Führen Sie als nächstes die SQL im Docker aus.
    • mysql -uroot -p, geben Sie das Passwort ein, um die Datenbank im Docker aufzurufen
    • Datenbank erstellencreate database blog;
    • Ausgang zurück zum Containerexit
    • Datei in Datenbank importierenmysql -uroot -p blog < blog.sql;
    • Datenbank wechselnuse blog;
    • führen Sie sql aus und speichern Sie die Datenbanksource blog.sql;
  • Ergebniskontrolle
    • use blog; show tables; select * from ms_admin;
    • Wenn wir das Ergebnis finden können (wie in der Abbildung unten gezeigt), bedeutet dies, dass unsere Bereitstellung erfolgreich war.
      Datenbankdaten erfolgreich importiert
  • In der tatsächlichen Bereitstellung verbringe ich die meiste Zeit mit der Datenbank, z. B. Verbindungsfehler, Zugriff verweigert, jdbc-Verbindung fehlgeschlagen usw., höchstwahrscheinlich aufgrund von Datenbankberechtigungen. Bitte überprüfen Sie, ob die Host-Berechtigungen, die root entsprechen, % this sind.
  • Es gibt auch eine Datenbank-Konfigurationsdatei, die in den Notizen von Code God geschrieben ist, ich habe sie hier nicht geschrieben, verwende vorerst einfach die Standardkonfiguration.

4 Docker konfigurieren redis

  • Das ist sehr einfach, ein Befehl, um es zu tun
  • docker run -id --name=redis -p 6379:6379 redis:5.0.3
  • eine Prüfung
    • Docker ps Zeigen Sie den aktuell ausgeführten Container an, theoretisch können Sie jetzt sehen, dass sowohl mysql als auch redis ausgeführt werden.
    • docker ps -a Alle Container anzeigen (einschließlich nicht ausgeführter)
  • Wir müssen die IP-Adresse überprüfen, die Redis Docker entspricht, die docker inspect redisspäter beim Packen des Projekts verwendet wird. Hier bin ich 172.17.0.3
    Die IP-Adresse, die Redis Docker entspricht

5 Dockerfile erstellt Backend-Image

  • Wir können die Mirrors wie MySQL und Redis direkt ziehen, aber die Mirrors der Back-End-Projekte müssen von uns selbst gepackt und erstellt werden.
  • Code Gods Erklärung von Dockerfile lautet wie folgt
    • Dockerfile ist eine Textdatei
    • enthält einen Befehl
    • Jede Anweisung baut eine Schicht basierend auf dem Basisbild auf und baut schließlich ein neues Bild auf
    • Für Entwickler: kann eine vollständig konsistente Entwicklungsumgebung für das Entwicklungsteam bereitstellen
    • Für Tester: Sie können das während der Entwicklung erstellte Image direkt verwenden oder
      ein neues Image über die Dockerfile-Datei erstellen, um mit der Arbeit zu beginnen
    • Für Betriebs- und Wartungspersonal: Während der Bereitstellung kann eine nahtlose Migration von Anwendungen erreicht werden

Zuerst müssen wir die Parameter für die Idee und das Paket konfigurieren

  • Verbindungsparameter konfigurieren -Idee Konfiguration
  • Es gibt auch einen Parameter zur domänenübergreifenden Konfiguration, Sie können sich auch auf Folgendes beziehen: Sie müssen Ihre eigene Domäne passieren lassen, und dann wird die domänenübergreifende Konfiguration von der vom Lehrer geschriebenen auf die zweite geändert. Der Grund ist wie in der Abbildung gezeigt, bitte Achtung an alle! Bildbeschreibung hier einfügen- Verpacken und Generieren eines JAR-PaketsVerpackungskonfiguration
  • Suchen Sie die lokale Datei, legen Sie sie an einem guten Ort ab und bereiten Sie den späteren Import in unser Verzeichnis vor
    Verarbeitung gepackter Dateien

Als nächstes müssen wir das JAR-Paket in das Verzeichnis /mnt/docker/app importieren, die Konfigurationsdatei des Images erstellen und das Image ausführen.

  • Erstellen Sie zuerst ein neues Verzeichnismkdir /mnt/docker/app
  • Konfigurationen, die die Upload-Funktion nutzen könnenyum -y install lrzsz
  • Wechseln Sie in dieses Verzeichniscd /mnt/docker/app
  • Daten hochladenrz
  • Namen ändernmv blog-api-1.0-SNAPSHOT.jar blog_api.jar
  • Konfigurieren Sie die Konfigurationsdatei zum Erstellen des Images
    • eine neue Datei erstellentouch blog_dockerfile
    • Dateiinhalt ändernvim blog_dockerfile
    • Fügen Sie den folgenden Inhalt ein (ändern Sie die persönlichen Parameter selbst)
FROM java:8
MAINTAINER zhangshidi <[email protected]>
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar --spring.profiles.active=prod
  • Laufbilddocker build -f ./blog_dockerfile -t app .
  • Überprüfen docker imagesSie, ob der Docker der App bereits ausgeführt wird

6 Erstellen Sie das Front-End-Image

Ändern Sie die Front-End-Konfiguration, das Paket, den Upload und die Feinabstimmung der Dateispeicherorte.

  • Gehen wir nach vorne

    • IP ändernBildbeschreibung hier einfügen
  • Erstellen Sie das Projekt, generiert er automatisch das zu verteilende Projekt, komprimiert die Datei manuell und sendet sie an unseren Cloud-Server.Bildbeschreibung hier einfügen

  • Zurück zur Befehlsfensterschnittstelle sollten wir die Unzip-Funktion installieren

#获取安装列表  yum安装列表中搜索zip/unzip是否存在

yum list | grep zip/unzip

#执行安装支持zip命令 根据提示输入y允许安装

yum install zip

#执行安装支持unzip命令 根据提示输入y允许安装

yum install unzip
  • Erstellen Sie den entsprechenden Ordner
    • mkdir /mnt/zhang
    • mkdir /mnt/zhang/blog
  • Wechseln Sie zum Blog-Verzeichnis cd /mnt/zhang/blog
    - upload rz, laden Sie unser Front-End-dist-komprimiertes Paket hoch
  • dekomprimierenunzip dist.zip
  • Verschieben Sie dann den Speicherort der Datei unter /mnt/zhang/blog ls, es sollten die folgenden drei Dateien sein: dist.zip, index.html, static, tatsächlich sollten die nützlichen Dateien index.html und static sein
    • Zum Verschieben habe ich es direkt auf das Dateiverzeichnis links gezogen, dort findet sich auch der entsprechende Befehl.
      Bildbeschreibung hier einfügen

7 Orchestrierung von Docker-Compose-Diensten

  • Die Dienstorchestrierung verwendet hauptsächlich Docker Compose, um springboot und nginx in Stapeln zu starten
    • Springboot ist unser eigenes gepacktes Projekt
    • Die Rolle von nginx: ① Die statischen Dateien (wie HTML, Bilder) auf dem Server werden dem Client über das HTTP-Protokoll angezeigt. ②Reverse-Proxy-Server, bei dem nginx-Proxy der Front-End-Ressourcen-Client ist, kann über das HTTP-Protokoll direkt auf einen Website-Anwendungsserver zugreifen, der Website-Administrator kann ein Nginx in der Mitte hinzufügen, der Client fordert Nginx an, Nginx fordert den Anwendungsserver an und dann das Das Ergebnis wird an den Client zurückgesendet. Das Hinzufügen einer Proxy-Schicht kann Lastenausgleich, virtuelles Hosting und andere Effekte erzielen. ( bitte siehe für Details )

Zuerst installieren wir Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

Erstellen Sie das entsprechende Verzeichnis und schreiben Sie die Konfigurationsdatei docker-compose.yml

  • vimbedeutet, die Datei zu ändern
mkdir /mnt/docker/docker-compose
cd /mnt/docker/docker-compose
touch docker-compose.yml
vim docker-compose.yml
  • Kopieren Sie den folgenden Inhalt nach docker-compose.yml. Drücken Sie nach dem Schreiben Esc, um den Bearbeitungsmodus zu verlassen, und geben Sie dann ein :wq, Sie können speichern und beenden~
version: '3'
services:
  nginx:
   image: nginx
   container_name: nginx
   ports:
    - 80:80
    - 443:443
   links:
     - app
   depends_on:
    - app
   volumes:
    - /mnt/docker/docker-compose/nginx/:/etc/nginx/
    - /mnt/zhang/web:/zhang/web
    - /mnt/zhang/blog:/zhang/blog
   network_mode: "bridge"
  app:
    image: app
    container_name: app
    expose:
      - "8888"
    network_mode: "bridge"
  • Diese Datei hat depends_ondie Funktion, Verzeichnisse anzuordnen. Achten Sie bei diesem Mount-Verzeichnis bitte auf Ihre eigene Verzeichnisreihenfolge. Wenn Sie verschiedenen Tutorials folgen, sollten Sie deren Verzeichnisreihenfolge von Ihrer eigenen Verzeichnisreihenfolge unterscheiden. Das Folgende ist meine Verzeichnisreihenfolge
    Bildbeschreibung hier einfügen

Als nächstes müssen wir das nginx-Dateiverzeichnis und die zugehörigen internen Konfigurationsdateien konfigurieren

  • Zuerst müssen wir die nginx.confDatei abrufen
mkdir -p ./nginx
cd /mnt/docker/nginx
touch nginx.conf
vim nginx.conf
  • Kopieren Sie den folgenden Inhalt
user nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}
  • Erstellen Sie einen neuen Ordner conf.d und dann eine neue blog.confDatei
mkdir conf.d
cd conf.d
touch blog.conf
vim blog.conf

blog.confÄndern Sie die Konfiguration und legen Sie die folgenden Dateien in

gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_vary off;
upstream appstream{
     
        server app:8888;
}
server{
    # 监听端口
    listen  80;
    # 主机名称/地址
    server_name www.zhangshidi.space zhangshidi.space;
    index   index.html;
    # 前端服务
     location / {
        root /zhang/blog/;
        # 刷新页面后跳转到当前页面
        try_files $uri $uri/ /index.html;
        index index.html;
     }

     # 后端api
     location /api {
                proxy_pass http://appstream;
    }

    location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
        root /zhang/blog/;
        index index.html;
        add_header Access-Control-Allow-Origin *;
    }
}
  • Es gibt auch eine ssl/tsl- Konfiguration in der Konfiguration des Codes God . Wenn Sie es brauchen, können Sie es beantragen und dann konfigurieren. Ich werde es hier weglassen.

  • Sie können sehen, dass es auch eine Datei mit dem Namenmime.types
  • Dieses Ding ist ein Muss in Nginx. Ich habe ein Nginx aus dem Internet heruntergeladen und die mime.typesDatei herausgenommen und rzeingegeben. Sie können auch eine neue Datei erstellen und den Code hineinkopieren. Der Code lautet wie folgt.

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}
  • überprüfen, lsGebrauchsanweisung
    Bildbeschreibung hier einfügen

8 Führen Sie den Test aus

  • An diesem Punkt ist unsere Bereitstellung im Grunde abgeschlossen

  • Überprüfen Sie auch docker ps, dass 4 Container ausgeführt werdenBildbeschreibung hier einfügen

  • Wechseln Sie in das Docker-Compose-Verzeichnis und starten Sie den Container. Im Folgenden finden Sie einige allgemeine Anweisungen zum Starten und Stoppen von Containern.

docker-compose up #直接启动

docker-compose up -d #代表后台启动

docker-compose down  #停止并删除容器

docker-compose start #启动已有容器

docker-compose stop  #停止运行的容器
  • Im Allgemeinen docker-compose upfangen wir direkt an zu sehen, ob es ein Problem mit der Website gibt. Wenn es ein Problem gibt, verwenden Sie die folgenden zwei Befehle, um es zu verbessern.
    • Schauen Sie sich das ngix-Protokoll an:docker logs nginx
    • Backend-Protokolle anzeigen:docker-compose logs
  • Wenn wir das Gefühl haben, dass die Bereitstellung vollständig abgeschlossen ist, können wir docker-compose up -d im Hintergrund starten, damit der Server ausgeschaltet und ausgeführt werden kann.

  • Abschließend möchte ich den beiden Artikelideen danken, auf die ich verwiesen habe. Sie sind beide gut geschrieben, aber einige Details sind für mich hier schwierig umzusetzen. Ich möchte auch Herrn Code God für seine Bemühungen danken. Sie können auch auf und verweisen Vergleichen Sie sie, ich glaube, sie werden Ihnen helfen.
  • Es gibt noch eine andere Frage, Sie fragen sich vielleicht, warum es keine Hintergrundverwaltungsbereitstellung gibt?
    • Schauen wir uns die Hintergrundverwaltung genauer an: Es handelt sich nur um Spring Security, und sie spielt überhaupt nicht die Rolle der Hintergrundverwaltung... Obwohl sie eingesetzt wird, ist sie bedeutungslos.

Vielen Dank für Ihren Besuch. Wenn Sie der Meinung sind, dass das Schreiben gut ist, geben Sie bitte ein Like und eine Ermutigung. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht. Willkommen, um auf das Problem hinzuweisen.

  • Setzen Sie auch eine Flagge für sich selbst, lernen Sie dann Spring Cloud und erobern Sie dann das Mall-Projekt mit den meisten Sternen auf Github

Supongo que te gusta

Origin blog.csdn.net/dolpin_ink/article/details/123056852
Recomendado
Clasificación