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.
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.
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. - 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.
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
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
run
hat 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.
- Welches
docker run -id \
-p 3307:3306 \
--name=mysql \
-v /mnt/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
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älter
docker exec -it mysql bash
- MYSQL in den Container
mysql -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 aktualisieren
flush privileges;
exit
Beenden Sie MySQL und dannexit
den 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 ist 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.
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/data
Verzeichnis und der/var/lib/mysql
Adresse 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älter
docker exec -it mysql bash
- Wechseln Sie in das Mount-Verzeichnis
cd /var/lib/mysql
- Wenn Sie sich alle Dateien
ls
in 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 erstellen
create database blog;
- Ausgang zurück zum Container
exit
- Datei in Datenbank importieren
mysql -uroot -p blog < blog.sql;
- Datenbank wechseln
use blog;
- führen Sie sql aus und speichern Sie die Datenbank
source 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.
- 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 redis
später beim Packen des Projekts verwendet wird. Hier bin ich 172.17.0.3
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 -
- 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! - Verpacken und Generieren eines JAR-Pakets
- Suchen Sie die lokale Datei, legen Sie sie an einem guten Ort ab und bereiten Sie den späteren Import in unser Verzeichnis vor
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 Verzeichnis
mkdir /mnt/docker/app
- Konfigurationen, die die Upload-Funktion nutzen können
yum -y install lrzsz
- Wechseln Sie in dieses Verzeichnis
cd /mnt/docker/app
- Daten hochladen
rz
- Namen ändern
mv blog-api-1.0-SNAPSHOT.jar blog_api.jar
- Konfigurieren Sie die Konfigurationsdatei zum Erstellen des Images
- eine neue Datei erstellen
touch blog_dockerfile
- Dateiinhalt ändern
vim blog_dockerfile
- Fügen Sie den folgenden Inhalt ein (ändern Sie die persönlichen Parameter selbst)
- eine neue Datei erstellen
FROM java:8
MAINTAINER zhangshidi <[email protected]>
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar --spring.profiles.active=prod
- Laufbild
docker build -f ./blog_dockerfile -t app .
- Überprüfen
docker images
Sie, 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 ändern
-
Erstellen Sie das Projekt, generiert er automatisch das zu verteilende Projekt, komprimiert die Datei manuell und sendet sie an unseren Cloud-Server.
-
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
- uploadrz
, laden Sie unser Front-End-dist-komprimiertes Paket hoch - dekomprimieren
unzip 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.
- Zum Verschieben habe ich es direkt auf das Dateiverzeichnis links gezogen, dort findet sich auch der entsprechende Befehl.
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
vim
bedeutet, 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_on
die 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
Als nächstes müssen wir das nginx-Dateiverzeichnis und die zugehörigen internen Konfigurationsdateien konfigurieren
- Zuerst müssen wir die
nginx.conf
Datei 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.conf
Datei
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 Namen
mime.types
- Dieses Ding ist ein Muss in Nginx. Ich habe ein Nginx aus dem Internet heruntergeladen und die
mime.types
Datei herausgenommen undrz
eingegeben. 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,
ls
Gebrauchsanweisung
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 werden -
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 up
fangen 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
- Schauen Sie sich das ngix-Protokoll an:
- 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