最簡(jiǎn)單的spring boot打包docker鏡像的實(shí)現(xiàn)
這個(gè)spring boot項(xiàng)目只在網(wǎng)頁(yè)輸出一個(gè)hello world文本,沒有其他復(fù)雜的配置和頁(yè)面,屬于入門級(jí),可以放心食用。
本項(xiàng)目通過maven打包,打包和構(gòu)建鏡像的命令為:
mvn clean install package docker:build
spring boot打包docker鏡像步驟如下:
(一)
在pom.xml文件中添加docker配置:
<!--docker maven plugin,在目錄src/main/docker下創(chuàng)建Dockerfile文件,Dockerfile文件用來(lái)說明如何構(gòu)建按鏡像-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<!--下面的.jar不要忘記寫,否則會(huì)報(bào)“ Exception caught: ADD failed: stat /var/lib/docker/tmp/docker-builder646478477/yang-0.0.1.jar: no such file or directory”錯(cuò)誤-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
(二)
在src/main/docker文件夾(新建文件夾)下建Dockerfile文件,該文件不要后綴,可以新建一個(gè)txt文件,再把.txt后綴去掉,文件內(nèi)容如下:
From java:8 VOLUME /TMP ADD yang-0.0.1.jar /yang-0.0.1.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/yang.jar"]
ADD yang-0.0.1.jar /yang-0.0.1.jar的名字 要和pom的<artifactId>yang</artifactId>
保持名字一樣,不然maven打出來(lái)的包,docker找不到。
比如,我這個(gè)項(xiàng)目中的<artifactId>標(biāo)簽內(nèi)容為:
pom.xml文件:
<artifactId>yang</artifactId> <version>0.0.1</version> <name>yang</name> <packaging>jar</packaging>
Dockerfile文件:
ADD yang-0.0.1.jar /yang-0.0.1.jar
ADD yang-0.0.1.jar /yang-0.0.1.jar這一句前面的jar包是本地打包的jar包名稱,后面是復(fù)制到docker后的重命名。
本項(xiàng)目完整的pom.xml文件內(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.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springboot</groupId>
<artifactId>yang</artifactId>
<version>0.0.1</version>
<name>yang</name>
<packaging>jar</packaging>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!--<docker.image.prefix>yang-0.0.1</docker.image.prefix>-->
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--redis-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-redis -->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-redis</artifactId>-->
<!--<version>1.4.7.RELEASE</version>-->
<!--</dependency>-->
<!--<!– https://mvnrepository.com/artifact/mysql/mysql-connector-java –>-->
<!--<dependency>-->
<!--<groupId>mysql</groupId>-->
<!--<artifactId>mysql-connector-java</artifactId>-->
<!--<version>8.0.18</version>-->
<!--</dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker maven plugin,在目錄src/main/docker下創(chuàng)建Dockerfile文件,Dockerfile文件用來(lái)說明如何構(gòu)建按鏡像-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--<imageName>${docker.image.prefix}/${project.artifactId}</imageName>-->
<imageName>${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
到此這篇關(guān)于最簡(jiǎn)單的spring boot打包docker鏡像的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)spring boot打包docker鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成Spring Security用JWT令牌實(shí)現(xiàn)登錄和鑒權(quán)的方法
這篇文章主要介紹了SpringBoot集成Spring Security用JWT令牌實(shí)現(xiàn)登錄和鑒權(quán)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
IntelliJ IDEA(2019)之mybatis反向生成的實(shí)現(xiàn)
這篇文章主要介紹了IntelliJ IDEA(2019)之mybatis反向生成,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
淺談java中集合的由來(lái),以及集合和數(shù)組的區(qū)別詳解
下面小編就為大家?guī)?lái)一篇淺談java中集合的由來(lái),以及集合和數(shù)組的區(qū)別詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2016-10-10
SpringBoot高并發(fā)下控制限流的幾種實(shí)現(xiàn)方法
隨著業(yè)務(wù)的發(fā)展,高并發(fā)成為很多系統(tǒng)不得不面對(duì)的問題,限流作為一種常用的技術(shù)手段,可以幫助我們有效地控制請(qǐng)求的流量,避免系統(tǒng)因過載而崩潰,本文將介紹在Spring Boot應(yīng)用中實(shí)現(xiàn)限流的幾種方法,需要的朋友可以參考下2024-06-06
Mybatis SqlSessionFactory與SqlSession詳細(xì)講解
SqlSessionFactory是MyBatis的核心類之一,其最重要的功能就是提供創(chuàng)建MyBatis的核心接口SqlSession,所以我們需要先創(chuàng)建SqlSessionFactory,為此我們需要提供配置文件和相關(guān)的參數(shù)2022-11-11

