欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于SpringBoot項目實現(xiàn)Docker容器化部署的主要步驟

 更新時間:2024年10月28日 10:47:16   作者:不惑_  
部署SpringBoot項目到Docker容器涉及選擇Java運行時環(huán)境的基礎鏡像、構(gòu)建包含應用程序的Docker鏡像、編寫Dockerfile、使用docker build命令構(gòu)建鏡像和使用docker run命令運行Docker容器等步驟

將Spring Boot項目部署到Docker容器中的涉及幾個主要步驟:

準備Docker鏡像

  • 首先,需要選擇一個基礎鏡像,通常是包含Java運行時環(huán)境的鏡像,例如OpenJDK。可以從Docker Hub或其他鏡像倉庫中獲取這些鏡像。
  • 接下來,需要在基礎鏡像上構(gòu)建一個包含Spring Boot應用程序的鏡像。這包括將應用程序的JAR文件、依賴項和配置文件添加到鏡像中。

編寫Dockerfile

  • Dockerfile是一個文本文件,其中包含了構(gòu)建Docker鏡像的指令。需要編寫一個Dockerfile來指定如何構(gòu)建包含Spring Boot應用程序的鏡像。
  • 在Dockerfile中,可以使用COPY指令將本地文件(包括Spring Boot應用程序的JAR文件和配置文件)復制到鏡像中。
  • 使用RUN指令可以在容器內(nèi)運行命令,例如安裝依賴項或執(zhí)行應用程序的構(gòu)建。
  • 使用CMD或ENTRYPOINT指令指定在容器啟動時要運行的命令,通常是啟動Spring Boot應用程序的命令。

構(gòu)建Docker鏡像

  • 使用docker build命令根據(jù)Dockerfile構(gòu)建Docker鏡像。例如:docker build -t my-spring-boot-app .,其中-t選項用于指定鏡像的名稱和標簽。

運行Docker容器

  • 使用docker run命令運行你的Docker鏡像。例如:docker run -p 8080:8080 my-spring-boot-app,其中-p選項用于將主機的端口映射到容器的端口,以便外部可以訪問應用程序。
  • 還可以使用其他選項來配置容器,例如掛載卷、設置環(huán)境變量等。

訪問應用程序

  • 一旦容器運行,可以通過訪問主機的端口(在上述示例中是8080)來訪問運行在Docker容器中的Spring Boot應用程序。

Docker容器化部署Spring Boot項目的原理涉及將應用程序及其依賴項打包到一個Docker鏡像中,然后在容器內(nèi)運行該鏡像。這使得應用程序在不同環(huán)境中更加可移植和隔離,同時也方便了部署和擴展。使用Docker可以大大簡化應用程序的部署流程,并提供了更好的資源管理和隔離,以及更高的可伸縮性。

閑言少敘,上科技?。?!

方式一:直接構(gòu)建jar包運行的鏡像

  • 將打包好程序,上傳到服務器的指定目錄
  • 例如:/home/www/spring-boot-image/spring-boot-docker-1.0.jar
  • 在該目錄下創(chuàng)建Dockerfile文件
FROM openjdk:8u312
MAINTAINER zhangt
ADD spring-boot-docker-1.0.jar zhangt.jar
EXPOSE 8520
ENTRYPOINT ["java","-jar","zhangt.jar"]

Dockerfile的內(nèi)容解釋:
FROM openjdk:8u312
這一行指定了基礎鏡像,從openjdk:8u312鏡像構(gòu)建。它使用了OpenJDK 8的版本號為312的鏡像作為基礎。這是一個包含Java運行時環(huán)境的基礎鏡像。
MAINTAINER zhangt
這一行設置了維護者信息,盡管在較新版本的Docker中,MAINTAINER已不再建議使用,而可以使用LABEL來添加類似的元數(shù)據(jù)信息。
ADD spring-boot-docker-1.0.jar zhangt.jar
這一行使用ADD指令將本地的spring-boot-docker-1.0.jar文件復制到鏡像中,并重命名為zhangt.jar。這個JAR文件包含了Spring Boot應用程序的可執(zhí)行代碼。
EXPOSE 8520
這一行使用EXPOSE指令聲明容器將監(jiān)聽的端口號,這里指定為8520。請注意,這只是一個元數(shù)據(jù)聲明,它不會自動將端口映射到主機上。
ENTRYPOINT ["java","-jar","zhangt.jar"]
這一行設置了容器啟動時要執(zhí)行的命令。在這種情況下,容器將以java -jar zhangt.jar命令啟動,這會運行Spring Boot應用程序。java命令會啟動Java虛擬機(JVM),并執(zhí)行zhangt.jar中的可執(zhí)行代碼。
這Dockerfile的作用是基于OpenJDK 8u312鏡像構(gòu)建一個包含Spring Boot應用程序的Docker鏡像。一旦構(gòu)建完成,可以使用這個鏡像來運行Spring Boot應用程序的容器,容器將監(jiān)聽8520端口,可以通過適當?shù)亩丝谟成鋪碜屚獠吭L問應用程序。

創(chuàng)建好Dockerfile文件之后,執(zhí)行命構(gòu)建鏡像

docker build -t zhangt .

注意最后的 . 表示Dockerfile在當前文件目錄下。zhangt表示構(gòu)建的鏡像,構(gòu)建成功后可以使用**docker images**命令查看鏡像。
-t 選項用于指定鏡像的名稱和標簽,你可以將 zhangt 替換為你想要的名稱和標簽。

鏡像構(gòu)建成功之后,就可以運行容器

docker run -d --restart=always --name zhangt -p 8520:8520 zhangt

各個參數(shù)的含義:
docker run: 用于啟動 Docker 容器的命令。
-d: 這是一個選項,表示在后臺(守護進程模式)運行容器。容器將在后臺運行,不會占據(jù)終端。
--restart=always: 這是另一個選項,表示容器在退出時總是重新啟動。即使容器因為錯誤或其他原因而停止,Docker 也會嘗試自動重新啟動容器。
--name zhangt: 這是用于給容器指定一個名稱的選項。容器的名稱被設置為 “zhangt”。
-p 8520:8520: 這是用于將主機端口與容器端口進行映射的選項。這個選項將主機的 8520 端口映射到容器的 8520 端口。這樣,外部可以通過訪問主機的 8520 端口來訪問容器內(nèi)運行的應用程序。
zhangt: 這是容器的名稱或鏡像名稱,表示要運行的容器是基于名為 “zhangt” 的 Docker 鏡像創(chuàng)建的。如果 “zhangt” 是一個鏡像名稱,Docker 將查找該鏡像并在容器中運行它。
這個命令的目的是在后臺運行一個 Docker 容器,該容器使用 “zhangt” 鏡像創(chuàng)建,并將主機的 8520 端口映射到容器的 8520 端口。容器的名稱設置為 “zhangt-p”,并且如果容器在任何情況下退出,Docker 會自動重新啟動它。這通常用于部署應用程序,以確保應用程序在意外情況下能夠自動恢復。
啟動容器后可以使用 **docker ps**命令查看啟動的容器
docker logs -f --tail 1000 容器id ,可以查看服務的日志。
如果想更新jar包,只需要使用 docker cp spring-boot-docker-1.0.jar 容器ID:/zhangt.jar,就可以將spring-boot-docker-1.0.jar拷貝進容器并重命名,然后 docker restart 容器ID 重啟容器。

方式二:基于jdk鏡像運行容器 在服務器中來取jdk鏡像

docker pull openjdk:8u181

創(chuàng)建目錄,并將jar包上傳到該目錄

cd /home/  mkdir www/spring-boot-docker

在Jar放置的同級目錄,編寫shell腳本命名為:start.sh

#!/bin/bash
echo -e "\n################ build service start #########################"
# delete docker container
echo -e "\n1, delete docker container [developer-platform-basic-dev] start ......"
sudo docker rm -f spring-boot-docker-1.0
# docker run # docker run developer-platform-basic-1.0.0
echo -e "\n2, docker run build container [spring-boot-docker-1.0] start ......"
sudo docker run --name spring-boot-docker-1.0 -d -p 8741:8741 \
-v /home/www/spring-boot-docker:/jar openjdk:8u181 \
java -jar /jar/spring-boot-docker-1.0.jar --spring.profiles.active=dev
echo -e "\n3, docker ps container [spring-boot-docker-1.0] start ...."
sudo docker ps -a  | grep spring-boot-docker-1.0
echo -e "\n4, docker logs container [spring-boot-docker-1.0] start ...."
sudo docker logs -f -t spring-boot-docker-1.0 > ./logs/log_$(date +%Y%m%d).out 2>&1 &
echo -e "\n################ build service end #########################"

核心腳本解釋:
1.sudo docker run 這是用于在Docker中運行容器的命令。通常需要使用sudo權(quán)限來執(zhí)行Docker命令,以確保具有足夠的權(quán)限來管理容器。
2. --name spring-boot-docker-1.0: 這是為Docker容器指定的名稱,容器的名稱被設置為"spring-boot-docker-1.0"。
3. -d: 這是一個選項,表示在后臺運行容器(即以守護進程模式運行),而不是在前臺交互模式下運行。
4. -p 8741:8741: 這個選項用于將主機的端口與容器的端口進行映射。具體來說,將主機的8741端口映射到容器的8741端口,這樣外部可以通過主機的8741端口訪問容器中的應用程序。
5. -v /home/www/spring-boot-docker:/jar: 這個選項用于將主機的文件系統(tǒng)目錄與容器內(nèi)的目錄進行掛載。在這種情況下,將主機上的/home/www/spring-boot-docker目錄掛載到容器內(nèi)的/jar目錄。這通常用于將應用程序的代碼和資源文件從主機復制到容器中,以便在容器內(nèi)運行應用程序。
6. openjdk:8u181: 這是要在容器中使用的Docker鏡像的名稱和標簽。在這里,使用的是一個基于OpenJDK 8u181的Java鏡像,該鏡像包含了Java運行時環(huán)境。
7. java -jar /jar/spring-boot-docker-1.0.jar --spring.profiles.active=dev: 這是在容器內(nèi)運行的命令。它啟動了Java虛擬機(JVM),并在JVM內(nèi)運行了一個Spring Boot應用程序。具體來說,它運行了/jar/spring-boot-docker-1.0.jar這個JAR文件,并通過–spring.profiles.active=dev指定了一個Spring配置文件的激活配置。

這個腳本的作用是創(chuàng)建一個名為"spring-boot-docker-1.0"的Docker容器,該容器運行一個基于Spring Boot的Java應用程序,該應用程序監(jiān)聽8741端口,并將主機上的/home/www/spring-boot-docker目錄掛載到容器內(nèi)的/jar目錄,以供應用程序使用。這樣,可以通過主機的8741端口訪問運行在容器中的Spring Boot應用程序。

運行腳本 sh start.sh以后發(fā)布,只需要把宿主機目錄里的jar包替換掉,重啟容器。

到此這篇關(guān)于基于SpringBoot項目實現(xiàn)Docker容器化部署的文章就介紹到這了,更多相關(guān)SpringBoot Docker容器化部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論