使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像
簡(jiǎn)介
由于本人開發(fā)環(huán)境是 Windows,但是生產(chǎn)環(huán)境是 Linux,應(yīng)用開發(fā)完后需要打包并構(gòu)建 Docker 鏡像,但是我不想在本地安裝 Docker,于是便使用遠(yuǎn)程的 Docker 進(jìn)行處理,以下是具體的步驟。
步驟
開啟遠(yuǎn)端 Docker 的訪問接口
本文以 Linux 環(huán)境下的配置為例,執(zhí)行以下命令編輯配置文件:
vim /usr/lib/systemd/system/docker.service
在 ExecStart 后面添加一行(表示啟動(dòng)2375端口用于監(jiān)聽遠(yuǎn)程操作)
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
執(zhí)行以下命令重啟 Docker 服務(wù)
systemctl daemon-reload && systemctl restart docker
系統(tǒng)中添加環(huán)境變量
系統(tǒng)中添加以下環(huán)境變量:
名稱:DOCKER_HOST 值:tcp://你 docker 所在的IP地址:上一步中配置的端口
如果這時(shí)候你的 IDEA 還是打開的,那么你需要關(guān)掉重啟 IDEA,否則環(huán)境變量的配置可能不會(huì)生效,或者你也可以直接使用命令的方式打包
配置插件
配置 SpringBoot 打包插件和 Docker 插件,由于我的項(xiàng)目中在父級(jí)的 pom 文件中已經(jīng)配置了插件版本管理,所以這里使用的插件是不需要 version 的,具體可以查詢 pluginManagement 這個(gè)關(guān)鍵字查看相關(guān)博文,這里不再贅述。
<build> <!--應(yīng)用程序打包后生成的 jar 名稱--> <finalName>your-app-name</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--需要加這個(gè),不然打包鏡像找不到啟動(dòng)文件--> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <addResources>true</addResources> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <configuration> <repository>cloud/${project.artifactId}</repository> <buildArgs> <!--應(yīng)用打包后jar所在的地方,默認(rèn)是在target里面--> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
編寫 Dockerfile 文件
在你需要構(gòu)建鏡像的應(yīng)用的 pom 文件相同的目錄下,創(chuàng)建一個(gè)名為 Dockerfile 的文件,其內(nèi)容如下:
FROM eclipse-temurin:17 COPY target/your-app-name.jar your-app-name.jar ENTRYPOINT ["java","-jar","/your-app-name.jar"]
第一行表示基于 JDK 17 鏡像;
第二行的 COPY,表示復(fù)制你打包好的 jar 包到鏡像中,這里的配置要和上一步驟中 pom 文件的配置吻合;
第三行表示容器啟動(dòng)后運(yùn)行的命令,這里簡(jiǎn)單使用 java -jar 運(yùn)行應(yīng)用即可。
構(gòu)建
首先打包你的程序,由于本人比較懶,就不使用命令的方式打包和構(gòu)建了,以 IDEA 為例,找到你要打包的模塊,點(diǎn)擊 package,這樣就會(huì)在 target 文件夾中生成一個(gè)jar包,如下圖所示,:
接著找到下面的插件,找到dockerfile,build,這樣會(huì)調(diào)用遠(yuǎn)程的 Docker 進(jìn)行構(gòu)建,鏡像也會(huì)保存到遠(yuǎn)程的 Docker 中,如下圖所示:
看到控制臺(tái)中出現(xiàn)下面這樣的 BUILD SUCCESS 就算是成功了:
接著我們?nèi)ミh(yuǎn)程的 Docker 查詢鏡像,可以看到鏡像已經(jīng)被構(gòu)建好了:
到此這篇關(guān)于使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像的文章就介紹到這了,更多相關(guān)SpringBoot應(yīng)用鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解
這篇文章主要介紹了Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12gitlab-runner中搭建nvm、nrm以及優(yōu)化maven打包方式
文章描述了如何在GitLab Runner上配置NVM、NRM,并優(yōu)化Maven打包過程,通過上述配置和優(yōu)化,作者將Maven打包時(shí)間從三分鐘縮短到不到40秒2024-11-11Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程
這篇文章主要介紹了Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下2016-10-10pod污點(diǎn)taint?與容忍度tolerations詳解
這篇文章主要為大家介紹了pod污點(diǎn)taint與容忍度tolerations示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷
本文主要介紹了docker運(yùn)行nginx容器,并通過掛載目錄將容器與宿主機(jī)的數(shù)據(jù)進(jìn)行共享和統(tǒng)一管理,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03docker容器分配固定ip的實(shí)現(xiàn)示例
如果不固定ip,每次主機(jī)重啟后,docker會(huì)動(dòng)態(tài)給容器分配ip,導(dǎo)致redis容器的IP自動(dòng)換了 ,然后還得去改配置就很煩,本文主要介紹了docker容器分配固定ip的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12Docker compose部署SpringBoot項(xiàng)目連接MySQL及遇到的坑
這篇文章主要介紹了Docker compose部署SpringBoot項(xiàng)目連接MySQL,文中給大家強(qiáng)調(diào)了如果在使用的過程中修改了Dockerfile,一定要把之前的鏡像刪掉,具體內(nèi)容詳情跟隨小編一起看看吧2021-09-09docker如何刪除<none>/dangling/懸空鏡像
這篇文章主要介紹了docker如何刪除<none>/dangling/懸空鏡像問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11