标签:方式分为 strong 官方 too ring oca 信息 localhost 验证
docker容器化部署是非常流行的,Java应用如果要运行在docker环境,就要制作包含该应用的docker镜像,可以手动使用dockerfile和docker-compose制作镜像,也可以使用插件docker-maven-plugin和jib-maven-plugin制作镜像;本文只讲这两种插件的使用以及需要注意的一些细节;以springboot项目为例,详细介绍下这两种用法!
搭建过程在此不过多演示,如果想自己尝试,或者查看我的源码,可以去我的仓库下载:springboot-docker
<properties>
<java.version>1.8</java.version>
<!--通过registry搭建的私有镜像仓库地址-->
<registryUrl>192.168.100.64:5000</registryUrl>
</properties>
<!--使用jib插件-->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.3.0</version>
<configuration>
<!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
<from>
<!--使用私有仓库镜像,tag是8-->
<image>${registryUrl}/java:8</image>
<!-- 也可以使用docker hub提供的,有时下载不下来 -->
<!-- <image>docker.io/library/java:8</image>-->
</from>
<to>
<!--镜像名称和tag,其中使用了mvn内置变量${project.version},表示当前工程的version-->
<image>${registryUrl}/dxiaodang/jib:${project.version}</image>
<!--或者也可以使用tags标签单独指定version -->
<!--<tags>
<tag>${project.version}</tag>
</tags>-->
</to>
<!--私服是http不是https,默认jib不推送到非https的私服,私服添加,公服不添加-->
<allowInsecureRegistries>true</allowInsecureRegistries>
<!--容器相关的属性-->
<container>
<!--jvm内存参数-->
<jvmFlags>
<jvmFlag>-Xms4g</jvmFlag>
<jvmFlag>-Xmx4g</jvmFlag>
<jvmFlag>-Duser.timezone=Asia/Shanghai</jvmFlag>
</jvmFlags>
<!--暴露的端口-->
<ports>
<port>8080</port>
</ports>
<!--设置镜像的创建时间为系统时间-->
<useCurrentTimestamp>true</useCurrentTimestamp>
</container>
</configuration>
</plugin>
?? 注意点(本文的精髓)??
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
搭建过程在此不过多演示,如果想自己尝试,或者查看我的源码,可以去我的仓库下载:springboot-docker
<!--docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名-->
<imageName>dangbo/${project.name}</imageName>
<!--指定tag标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径 ${project.basedir}:项目根路径下-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--指定远程 docker api地址-->
<dockerHost>http://192.168.100.64:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 以下两行是为了docker push到DockerHub使用的。 -->
<!--<serverId>docker-hub</serverId>-->
<!--<registryUrl>https://index.docker.io/v1</registryUrl>-->
</configuration>
</plugin>
# 项目所依赖的镜像
FROM java:8
# 将maven构建好的jar添加到镜像中
ADD target/*.jar app.jar
# 暴露的端口号,用于标记信息,和容器内程序保持一致,使运维人员知道容器都要暴露哪些端口
EXPOSE 31945
# 镜像所执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
?? 注意点??
/lib/systemd/system/docker.service
systemctl restart docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
由于将插件绑定在mvn package上,直接执行命令即可:mvn clean package -Dmaven.test.skip=true
2.5.1 查看镜像是否存在
2.5.2 启动
2.5.3 测试接口
本次分享就到此结束,如果有不对的地方,请大家评论区留言,谢谢!!!
【构建docker镜像之插件篇】使用插件实战演示:docker-maven-plugin和jib-maven-plugin
标签:方式分为 strong 官方 too ring oca 信息 localhost 验证
原文地址:https://www.cnblogs.com/dxiaodang/p/14530316.html