做網(wǎng)站最清晰的字體廈門seo屈興東
容器化spring boot應用程序有多種方式,如基于簡單的Dockerfile,多階段Dockerfile以及基于Docker Compose等,我們將逐步給大家介紹,本節(jié)主要介紹基于簡單的Dockerfile進行容器化spring boot的應用程序。
創(chuàng)建Spring boot應用程序
創(chuàng)建一個簡單的spring boot應用程序,有多種方式,如基于Spring Initializr、基于Maven或者Gradle等多種方式,大家可以根據(jù)自己的偏好進行創(chuàng)建,我們以Maven為例,需要添加以下依賴項:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
其中插件spring-boot-maven-plugin用于打包spring boot的jar包,必須要添加該插件,否則會導致最終的jar包不能執(zhí)行。
添加端點
添加一個測試端點,用于部署后的測試,如下所示:
@RestController
@RequestMapping(value = "test")
public class TestController {@GetMapping(value = "test")public String test() {return "test";}
}
添加Dockerfile文件
Dockerfile需要添加到項目的根目錄下,且名字必須是Dockerfile,注意沒有后綴名。Dockerfile的內(nèi)容如下所示:
FROM openjdk:17-jdk-alpine
MAINTAINER author
RUN mkdir service
WORKDIR service
COPY JwtDemo-1.0-SNAPSHOT.jar application.jar
ENTRYPOINT ["java","-jar","application.jar"]
如上代碼所示,
第一行使用的是jdk 17的鏡像
第二行是一個維護者的信息,不建議太多;
第三行run 主要是在容器內(nèi)創(chuàng)建文件夾service
第四行workdir 用于將工作目錄設(shè)置為上一步創(chuàng)建的service文件夾
第五行copy 用于將程序的jar包拷貝到容器內(nèi)部,基于第四行,復制到了容器內(nèi)部的service文件夾中
第六行是啟動jar包的命令,用于容器啟動后,運行應用程序
構(gòu)建鏡像
我是基于linux的centos系統(tǒng)進行鏡像的構(gòu)造和容器的運行的,因此,需要將打包后的jar包即JwtDemo-*.jar上傳到linux系統(tǒng)中,同時也需要將Dockerfile同樣復制到linux上與jar包在一個目錄下,如下圖所示:
構(gòu)建鏡像的命令如下:
docker build -t jwt:v1 .
以上命令用于構(gòu)建鏡像jwt,其中v1是新鏡像的版本號,如果沒有v1,則默認為latest;此外需要注意的是,在這個命令行的末尾有一個點,用于加載當前目錄的Dockerfile文件,這也是為什么創(chuàng)建Dockerfile時使用該名稱的原因,當然也可以使用其他文件名,但需要使用其他參數(shù)進行指定。
創(chuàng)建后的鏡像如下
啟動容器?
運行如下命令,啟動該容器
docker container run -d -p 3000:8080 --name jwt jwt:v1
如上圖,通過docker container run命令,啟動另一個容器,名稱為jwt,并將容器內(nèi)部應用程序的端口8080映射到了宿主機的3000的端口上,執(zhí)行以上命令之后,可以執(zhí)行如下命令調(diào)用test的端點
如上所示,通過調(diào)用宿主機的3000端口,可以發(fā)現(xiàn)能夠正常使用
至此,我們完成了spring boot應用程序的容器化工作,如果后續(xù)我們的程序發(fā)生了變化,則可以通過上述的步驟,重新構(gòu)建鏡像,刪除已有的容器,并創(chuàng)建新的容器便可以了。
希望以上文章對您有所幫助,后續(xù)將給大家介紹如何通過idea直接連接到遠程的docker上以及如何基于Docker Compose進行應用的容器化。