springboot項(xiàng)目打包鏡像方式以及區(qū)分環(huán)境打包的方法
方法一:將項(xiàng)目jar包手動(dòng)推送到docker服務(wù)器上
1.用maven對(duì)項(xiàng)目進(jìn)行打包,打包成功后會(huì)有一個(gè)target目錄,目錄下有打好的項(xiàng)目jar包
2.將jar包上傳到服務(wù)器上,我用的是finalshell工具,大家可以自己根據(jù)自己使用的工具將文件傳送到服務(wù)器上
3.在跟jar包同級(jí)目錄下寫Dockerfile文件
dockerfile文件具體內(nèi)容
FROM openjdk:11 #基于哪些鏡像進(jìn)行構(gòu)建 MAINTAINER gpj #作者名稱 # # 將jar包添加到容器中,并命名為 springboot_docker.jar ADD demo-0.0.1-SNAPSHOT.jar /demo.jar # 運(yùn)行jar包 RUN bash -c 'touch demo.jar' ENTRYPOINT ["java", "-jar", "demo.jar"] # 設(shè)置時(shí)區(qū) RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone # SpringBoot項(xiàng)目配置的端口號(hào)為9999,需要將9999暴露出去 EXPOSE 9999
4.執(zhí)行docker build命令
docker build -f Dockerfile -t demo:1.0 .
5.查看鏡像
docker images
可以看到剛剛打包的鏡像
6.運(yùn)行容器
docker run -d --name dmeo -p 9999:9999 demo:1.0
查看容器是否在運(yùn)行
docker ps
服務(wù)器開放9999端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent systemctl restart firewalld
調(diào)用后端方法
方法二:在idea中安裝docker插件,通過插件部署
1.安裝docker插件
進(jìn)入項(xiàng)目,點(diǎn)擊File->Settings->Plugins,docker插件是默認(rèn)安裝上的,可以先去Installed中查看是否已經(jīng)安裝
如果未安裝可以點(diǎn)擊Marketplace,在搜索框中搜索docker,點(diǎn)擊Installed進(jìn)行安裝
2.打開docker遠(yuǎn)程訪問
修改docker.service文件
Docker 安裝成功之后,首先需要修改 Docker 配置來開啟允許遠(yuǎn)程訪問 Docker 的功能。
文件位置:/lib/systemd/system/docker.service
修改內(nèi)容: 加入如下內(nèi)容:
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
服務(wù)器開放2375端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent systemctl restart firewalld
重啟docker
systemctl daemon-reload systemctl restart docker
3.在idea的docker插件中配置docker遠(yuǎn)程訪問的地址
在idea項(xiàng)目中點(diǎn)擊File->settings->Build->Docker
4.在項(xiàng)目根目錄和pom文件同級(jí)的地方寫Dockerfile文件
dockerfile文件的具體內(nèi)容
FROM openjdk:11 MAINTAINER jyz # # 將jar包添加到容器中,并命名為 springboot_docker.jar ADD demo-0.0.1-SNAPSHOT.jar /demo.jar # 運(yùn)行jar包 RUN bash -c 'touch demo.jar' ENTRYPOINT ["java", "-jar", "demo.jar"] # 設(shè)置時(shí)區(qū) RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone # SpringBoot項(xiàng)目配置的端口號(hào)為9999,需要將9999暴露出去 EXPOSE 9999
5.在啟動(dòng)配置那里編輯docker配置
之后點(diǎn)擊執(zhí)行
可以根據(jù)方法一中的最后兩步進(jìn)行驗(yàn)證
方法三:用maven插件進(jìn)行構(gòu)建
開啟docker遠(yuǎn)程訪問,詳細(xì)步驟見方法二
將dockerfile文件放到resource文件夾下
1.在pom文件中引入docker插件
pom文件詳細(xì)內(nèi)容
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>demo</description> <properties> <java.version>11</java.version> <docker-ip>服務(wù)器IP</docker-ip> <docker-url>http://${docker-ip}:2375</docker-url> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <dockerHost>${docker-url}</dockerHost> <imageName>${project.artifactId}:${project.version}</imageName> <!-- 在生成圖像后將其推入的標(biāo)志。默認(rèn)為false --> <pushImage>true</pushImage> <imageTags> <!-- 指定鏡像標(biāo)簽,可以排至多個(gè)標(biāo)簽 --> <imageTag>${project.version}</imageTag> </imageTags> <!--是否強(qiáng)制覆蓋已有鏡像--> <forceTags>true</forceTags> <!--方式一:1、指定Dockerfile文件所在目錄,通過文件執(zhí)行打包上傳nexus私服--> <dockerDirectory>src/main/resources</dockerDirectory> <!-- 指定docker鏡像打包參數(shù),即dockerfile中使用的參數(shù),通過${參數(shù)名}取值 --> <resources> <resource> <targetPath>/</targetPath> <!--指定需要復(fù)制的根目錄,${project.build.directory}表示target目錄--> <directory>${project.build.directory}</directory> <!--用于指定需要復(fù)制的文件,${project.build.finalName}.jar表示打包后的jar包文件--> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build> </project>
2.運(yùn)行mvn build命令
mvn docker:build
成功打包成鏡像
可以根據(jù)方法一中的最后兩步進(jìn)行驗(yàn)證
基于第三步的配置進(jìn)行鏡像區(qū)分環(huán)境
以下文件需要配置到pom文件中,這里的配置每一個(gè)profile標(biāo)簽都是獨(dú)立的,只有在打包的時(shí)候才會(huì)用到,也就是執(zhí)行 mvn命令時(shí)通過 -P這個(gè)指令指定profile標(biāo)簽的id那么打包所用的一些參數(shù)配置會(huì)以你制定的profile為準(zhǔn)。
<profiles> <profile> <!--不同環(huán)境Profile的唯一id--> <id>dev</id> <properties> <!--profiles.active是自定義的字段(名字隨便起),自定義字段可以有多個(gè)--> <profiles.active>dev</profiles.active> </properties> </profile> <profile> <id>prod</id> <!--properties標(biāo)簽下定義的標(biāo)簽是個(gè)性化的,根據(jù)業(yè)務(wù)項(xiàng)目需要定制不同標(biāo)簽,--> <properties> <profiles.active>prod</profiles.active> <docker-url>服務(wù)器IP:2375</docker-url> </properties> </profile> <profile> <id>test</id> <properties> <profiles.active>test</profiles.active> <docker-url>服務(wù)器IP:2375</docker-url> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles>
此時(shí)把之前在pom中<properties>定義的docker-url刪除,在執(zhí)行mvn打包鏡像命令時(shí)添加 -P
<!--這里如果鏡像統(tǒng)一都是由一個(gè)docker服務(wù)器打包的話,在鏡像的名字中添加上test或者prod,再或者其他標(biāo)識(shí)不同環(huán)境的信息即可,我這里是使用的profiles.active作區(qū)分,對(duì)應(yīng)的是我上面聲明的環(huán)境信息--> <imageName>${project.artifactId}-${profiles.active}:${project.version}</imageName>
mvn -Ptest docker:build
到此這篇關(guān)于springboot項(xiàng)目打包鏡像方式以及區(qū)分環(huán)境打包的方法的文章就介紹到這了,更多相關(guān)springboot 打包鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot微服務(wù)打包Docker鏡像流程解析
- Springboot打包為Docker鏡像并部署的實(shí)現(xiàn)
- 使用Maven將springboot工程打包成docker鏡像
- idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署
- SpringBoot打包docker鏡像發(fā)布的詳細(xì)步驟
- 一步步教你把SpringBoot項(xiàng)目打包成Docker鏡像
- Java(SpringBoot)項(xiàng)目打包(構(gòu)建)成Docker鏡像的幾種常見方式
- SpringBoot打包成Docker鏡像的幾種實(shí)現(xiàn)方式
相關(guān)文章
在RedHat系統(tǒng)上安裝JDK與Tomcat的步驟
這篇文章主要介紹了在RedHat系統(tǒng)上安裝Java與Tomcat的步驟,同樣適用于CentOS等RedHat系的Linux系統(tǒng),需要的朋友可以參考下2015-11-11Java TimedCache 帶時(shí)間緩存工具類詳解使用
工具類是包含集合框架、遺留的 collection 類、事件模型、日期和時(shí)間設(shè)施、國際化和各種實(shí)用工具類(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時(shí)間處理模式、日期工具等各類常用工具包,本文將介紹帶時(shí)間緩存工具類2021-10-10SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案
這篇文章主要介紹了SpringBoot報(bào)錯(cuò)Invalid?bound?statement?(not?found)問題排查和解決方案,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03解決BeanUtils.copyProperties無法成功封裝的問題
這篇文章主要介紹了解決BeanUtils.copyProperties無法成功封裝的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法
這篇文章主要介紹了超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03