Docker 一次构建、处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了础教程。
本篇主要介绍下如何通过 IntelliJ IDEA、Maven 来操作 Docker 部署 Spring Boot 项目,这也是我们 Java 程序员最关心的开发实战。
首先在 Maven pom.xml 配置文件中加入 Docker 的 Maven 插件。
在配置文件pom.xml的build模块中添加docker-maven-plugin 插件配置:
<build> <!--打包名称--> <finalName>springboot-hertzbeat</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <!--下面这段代表执行package就build项目中的Dockerfile--> <executions> <execution> <id>default</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <!--下面这段代表产出的内容--> <configuration> <repository>itlaoqi/${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
此插件的环境要求:
图片
Dockerfile 是创建 Docker 镜像的基本配置文件,本身是一个文本文件。
插件默认加载位置为项目所在根目录,因为我在上面的 Maven 插件配置中指明了路径。所以,在 项目的根 目录下添加一个 Dockerfile 文件:
图片
其中,AGR JAR_FILE对应了pom.xml文件中的${project.build.finalName}.jar,也就是生成的jar包名字。
# 基础镜像FROM openjdk:8-jre# 指定路径ARG JAR_FILE# 复制jar文件到路径COPY /target/${JAR_FILE} /app.jar# 启动认证服务ENTRYPOINT ["java","-jar","-Duser.timeznotallow=GMT+08","app.jar"]EXPOSE 9682
图片
配置了 Maven 插件和 Dockerfile 文件后就可以开始构建 Docker 镜像了。
上面也说了,Docker 构建过程已经集成到了 Maven 的构建过程之中,那么可以直接使用 mvn package
就可以同时打包和构建 Docker 镜像了。
因为我电脑不想安装docker,于是将代码上传到了gitlab,然后在服务器上通过git clone拉取了代码。
图片
此时执行命令:mvn package -DskipTests,等待片刻使用docker images命令查看就会发现已经构建好了一个新的镜像itlaoqi/springboot-hertzbeat。
一旦我们创建了 Dockerfile 文件,IDEA 就会自动识别并提示我们创建 Docker 连接,当然,我们也可以调出 Services 面板进行手动创建。
打开 IDEA 中的 Services 面板:
图片
创建完后会自动连接上,点击展开会显示 Docker 远程(本地)所有镜像和容器:
图片
如上图所示,就是我们刚构建的镜像。
右击上面的镜像,选择 "Create Container" 菜单来创建并运行一个容器。
图片
注意:绑定端口这里不要写主机,如果启动不起来,具体错误可以查看预览命令
图片
项目在 Docker 中运行起来了,
图片
然后再访问下上面写的测试接口:
http://xxxxx:9682/hello
图片
本文链接:http://www.28at.com/showinfo-26-87019-0.html用Docker-Maven-Plugin构建SpringBoot镜像,带劲!
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。