Heim >Java >javaLernprogramm >Wie Docker SpringBoot bereitstellt und JAR-Pakete ersetzt
Erstellen Sie eine Dockerfile-Datei, die später verwendet wird.
Erstellen Sie einen neuen Ordner /data/docker/hellolearn auf dem Server (der Dateipfad kann angepasst werden), legen Sie das mit Maven gepackte JAR-Paket ab und erstellen Sie die Docker-Datei oben Kopieren Sie die Datei in den neu erstellten Ordner auf dem Server (/data/docker/hellolearn).
#🎜 🎜#docker build -t Bildname: Die relative Position der Docker-Datei. Der Punkt stellt das aktuelle Verzeichnis dar. Wenn kein Tag geschrieben ist, ist der Standardwert „latest“. Container startendocker build -t hellolearn .
docker run -d -p 8301:8301 --name hellolearn hellolearn#🎜 🎜#docker start hellolearn
Der Parameter -d dient dazu, den Container im Hintergrund laufen zu lassen; --name ist der Name des angegebenen Containers; Führen Sie zu diesem Zeitpunkt eine Portzuordnung durch. Der 8301-Port (Port vor dem Doppelpunkt) im Container wird dem 8301-Port (Port nach dem Doppelpunkt) im Container zugeordnet (application.properties ist mit 8301 konfiguriert)
Web besuchen
JAR-Paketzuordnungsbereitstellung
5.1 Docker-Datei aktualisieren
Letzte Zeile Einstiegspunkt ["Java","-jar","/data/learn-web-0.0.1-snapshot.jar "]
führt die Datei learn-web-0.0.1-snapshot.jar im Verzeichnis /data im Container aus.
5.2 Verwenden Sie den Docker-Build-Befehl, um das Image zu erstellen entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"]
会运行容器里/data目录下的learn-web-0.0.1-snapshot.jar文件。
5.2 使用docker build命令构建镜像
docker build -t hellolearn .
5.3 创建&启动容器
docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn
-v 宿主机目录关联容器目录。这样宿主机的/data/docker/newhellolearn/package目录就与docker的/data目录进行映射。
这样的话,当jar包发生变动时,直接更新宿主机的/data/docker/newhellolearn/package目录下的jar包即可,更新jar包之后需要将容器重启一下。
通过jar包部署方式引起一个问题,若jar包名字发生变化,比如版本号变化(learn-web-0.0.1-snapshot.jar-->>learn-web-1.0.1-snapshot.jar)。需要怎么处理呢?下面就介绍第三种通过脚本部署的方式。
6.1 创建hellolearn.sh文件
java -jar /data/learn-web-0.0.1-snapshot.jar
将hellolearn.sh上传到/data/docker/hellolearn/scriptdeploy/package,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。
6.2 添加脚本执行权限
chmod +x hellolearn.sh
6.3 创建dockerfile
cmd ["sh","-c","/data/hellolearn.sh"]
docker build -t hellolearn .
5.3 Erstellen & den Container startendocker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn
# 🎜🎜## 🎜🎜#-v Das Hostverzeichnis ist dem Containerverzeichnis zugeordnet. Auf diese Weise wird das Verzeichnis /data/docker/newhellolearn/package des Hosts dem Verzeichnis /data des Dockers zugeordnet.Wenn sich in diesem Fall das JAR-Paket ändert, aktualisieren Sie einfach das JAR-Paket im Verzeichnis /data/docker/newhellolearn/package direkt nach dem Aktualisieren des JAR-Pakets Der Behälter.
java -jar /data/learn-web-0.0.1-snapshot.jar#🎜🎜 #
Laden Sie hellolearn.sh nach /data/docker/hellolearn/scriptdeploy/package hoch. Merken Sie sich diesen Ordnerpfad, der später verwendet wird.
6.2 Skriptausführungsberechtigung hinzufügen
chmod +x hellolearn.sh
6.3 Docker-Datei erstellen#🎜🎜# #🎜🎜#cmd ["sh","-c","/data/hellolearn.sh"]
bedeutet, das in 6.1 erstellte hellolearn.sh-Skript zu starten, wenn der Container gestartet wird. #🎜🎜##🎜🎜#Beachten Sie, dass der letzte oben erwähnte Befehl „entrypoint“ ist, der in der Skriptbereitstellung in „cmd“ geändert wurde. Wenn Sie sich für den spezifischen Unterschied zwischen „entrypoint“ und „cmd“ interessieren, können Sie mehr erfahren. #🎜🎜##🎜🎜#6.4 Laden Sie das JAR-Paket hoch. #🎜🎜##🎜🎜#Legen Sie das JAR-Paket in dasselbe Ordnerverzeichnis wie hellolearn.sh, d. h. /data/docker/hellolearn/scriptdeploy/package, wann Erstellen des Containers Ordnen Sie dann dieses Verzeichnis (Hostverzeichnis) dem Verzeichnis /data des Containers zu. . #🎜🎜##🎜🎜#6.5 Dateiverzeichnisstrukturdiagramm#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Ich weiß nicht, ob Sie über die Verzeichnisstruktur hier verwirrt sind, laden Sie eines hoch Hier ist das Verzeichnisstrukturdiagramm des Hosts auf einen Blick klar. #🎜🎜##🎜🎜#6.6 Bild erstellen #🎜🎜##🎜🎜##🎜🎜#docker build -t hellolearn-script .#🎜🎜##🎜🎜##🎜🎜#Der Punkt am Ende stellt das dar aktuelles Verzeichnis, daher muss der Befehl zum Generieren des Bildes in dem Verzeichnis ausgeführt werden, in dem sich die Docker-Datei befindet. #🎜🎜##🎜🎜#6.7 Container erstellen und starten #🎜🎜##🎜🎜##🎜🎜#docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302:8301 hellolearn-script#🎜🎜##🎜🎜#docker start hellolearn-script#🎜🎜#
Verknüpfen Sie das /data/docker/hellolearn/scriptdeploy/package-Verzeichnis des Hosts mit der /data-Verzeichniszuordnung des Containers. Wenn sich in diesem Fall das JAR-Paket ändert, aktualisieren Sie einfach das JAR-Paket direkt im Hostverzeichnis. Auch wenn sich der Name des JAR-Pakets ändert, müssen Sie das Skript hellolearn.sh aktualisieren. Starten Sie den Container nach dem Update neu.
6.8 Webtesteffekt
Docker-Protokolle [ Optionen] Container-ID
Optionsbeschreibung:
-f: Protokollausgabe verfolgen
--since: Zeigt eine bestimmte Startzeit an Alle Protokolle
-t: Zeitstempel anzeigen
--tail: Nur die neuesten n Containerprotokolle auflisten
7.1 Protokolle nach der angegebenen Zeit anzeigen, nur das letzte anzeigen 100 Zeilen:
# 🎜🎜 #7.2 Überprüfen Sie die Protokolle des angegebenen Zeitraums :00:00" Container-IDdocker logs -f -t --since="2020-10-01" --tail=100 Container-ID
7.3 Protokolle nach der angegebenen Zeit anzeigen:docker logs -t --since=" 2020- 10-01t19:00:00" Container-ID
7.4 Sehen Sie sich die Protokolle der letzten 5 Minuten an:docker logs --since 5m Container-ID
7.5 Bash für den angegebenen Container über den exec-Befehl ausführen:docker exec hellolearn -it /bin/bash
oderdocker exec -it hellolearn bash
7.6 View docker ip
docker exec hellolearn -it /bin/bash
或者 docker exec -it hellolearn bash
7.6 查看docker ip
docker inspect --format='{{.networksettings.ipaddress}}' hellolearn
问题描述:error response from daemon: driver failed programming external connectivity on endpoint flamboyant_leavitt (iptables failed: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: no chain/target/match by that name.
解决方案:重启docker。 systemctl restart docker
docker inspect --format='{{.networksettings. ipaddress }}' hellolearn
systemctl docker neu starten
#🎜🎜#Das obige ist der detaillierte Inhalt vonWie Docker SpringBoot bereitstellt und JAR-Pakete ersetzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!