最简单的spring boot打包docker镜像的实现
程序员文章站
2022-03-08 10:04:50
这个spring boot项目只在网页输出一个hello world文本,没有其他复杂的配置和页面,属于入门级,可以放心食用。本项目通过maven打包,打包和构建镜像的命令为:mvn clean in...
这个spring boot项目只在网页输出一个hello world文本,没有其他复杂的配置和页面,属于入门级,可以放心食用。
本项目通过maven打包,打包和构建镜像的命令为:
mvn clean install package docker:build
spring boot打包docker镜像步骤如下:
(一)
在pom.xml文件中添加docker配置:
<!--docker maven plugin,在目录src/main/docker下创建dockerfile文件,dockerfile文件用来说明如何构建按镜像--> <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不要忘记写,否则会报“ exception caught: add failed: stat /var/lib/docker/tmp/docker-builder646478477/yang-0.0.1.jar: no such file or directory”错误--> <include>${project.build.finalname}.jar</include> </resource> </resources> </configuration> </plugin>
(二)
在src/main/docker文件夹(新建文件夹)下建dockerfile文件,该文件不要后缀,可以新建一个txt文件,再把.txt后缀去掉,文件内容如下:
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打出来的包,docker找不到。
比如,我这个项目中的<artifactid>标签内容为:
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包名称,后面是复制到docker后的重命名。
本项目完整的pom.xml文件内容如下,各位可以作为参考:
<?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下创建dockerfile文件,dockerfile文件用来说明如何构建按镜像--> <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>
到此这篇关于最简单的spring boot打包docker镜像的实现的文章就介绍到这了,更多相关spring boot打包docker镜像内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Spring Boot Maven 打包可执行Jar文件的实现方法
-
Spring Boot Maven 打包可执行Jar文件的实现方法
-
Spring Boot实现简单的定时任务
-
Docker的镜像制作与整套项目一键打包部署的实现
-
Spring boot WebSocket实现简单的多人聊天
-
Spring Boot使用Docker分层打包的设置方法
-
使用脚本一键打包并上传docker镜像的实现代码
-
Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解
-
spring boot1.1 idea + springboot + mybatis(mybatis-generator) +mysql +html实现简单的登录注册
-
Spring Boot+JWT快速实现简单的接口鉴权