三种自动化构建Docker镜像的Maven插件使用

2021-08-20  本文已影响0人  奋斗_登

手动部署SpringBoot应用比较繁琐,且容易出错,合理使用相关插件能提高工作效率,降低出错概率。本文主要介绍三种自动化构建Docker镜像的Maven插件使用,开发工具使用idea。

  1. io.fabric8.docker-maven-plugin
  2. com.spotify.dockerfile-maven-plugin
  3. org.springframework.boot.spring-boot-maven-plugin [SpringBoot官方插件]

以下分别介绍这三种插件的使用方法

io.fabric8.docker-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.37.0</version>
        <plugin>
    </plugins>
</build>

添加后在idea 右侧工具栏可以看到相关的插件命令


docker-maven-plugin
<configuration>
    <!-- Docker 推送镜像仓库地址-->
    <pushRegistry>http://12.78.18.15:5000</pushRegistry>
    <images>
        <image>
            <!--推送到私有镜像仓库,镜像名需要添加仓库地址-->
            <name>12.78.18.15:5000/${project.name}:${project.version}</name>
            <!--定义镜像构建行为-->
            <build>
                <dockerFileDir>${project.basedir}</dockerFileDir>
            </build>
            <!--定义容器启动行为-->
            <run>
                <!--设置容器名,可采用通配符-->
                <containerNamePattern>${project.artifactId}</containerNamePattern>
                <!--设置端口映射-->
                <ports>
                    <port>8082:8082</port>
                </ports>
                <!--设置容器间连接-->
                <links>
                    <link>mysql:db</link>
                </links>
                <!--设置容器和宿主机目录挂载-->
                <volumes>
                    <bind>
                        <volume>/etc/localtime:/etc/localtime</volume>
                    </bind>
                </volumes>
            </run>
        </image>
    </images>
</configuration>

私有镜像仓库搭建可参考:https://www.jianshu.com/p/bbbf93b29b78
dockerfile相关的配置这里使用Dockerfile文件

# 该镜像需要依赖的基础镜像
FROM lpicanco/java11-alpine
# 将当前maven目录生成的文件复制到docker容器的/目录下
COPY target/fabric-docker-1.0-SNAPSHOT.jar /
# 声明服务运行在8082端口
EXPOSE 8082
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/fabric-docker-1.0-SNAPSHOT.jar"]
# 指定维护者的名字
MAINTAINER climber
  1. 生成镜像
    生成镜像前要先将项目打包,否则会找不到jar文件而报错
    双击"docker:builder" 即可完成镜像的生成


    docker:builder button
docker:builder
  1. 推送镜像到私有仓库
    在上传前请再先登录私有仓库
docker login --username=lipandeng 12.7.18.150:5000

然后双击"docker:push"即可


Docker Registry UI
  1. 容器操作
    容器中有关联mysql容器,所以先启动mysql容器,然后双击“docker:start/stop/remove”来实现容器的启动/停止/销毁操作


  2. 其它
    也可在生产包的时候同时生成镜像文件,添加如下配置
<executions>
    <execution>
        <id>build-image</id>
        <phase>package</phase>
        <goals>
            <goal>build</goal>
        </goals>
    </execution>
</executions>

这样就不用单独再双击“docker:build”了,在双击package,生成包成功后接着就生成了新的镜像

com.spotify.dockerfile-maven-plugin

Spotify官方已经不再推荐使用 docker-maven-plugin ;推荐使用 com.spotify.dockerfile-maven-plugin

mvn package
mvn package

org.springframework.boot.spring-boot-maven-plugin

子项目:springboot-docker
springboot 2.3.X+ , maven plugin支持将应用程序打包成Docker镜像,无需额外的Dockerfile,只需要一条命令即可,不需要任何改动,这里我们用最新版的2.5.3
使用方法:

总结

  1. io.fabric8.docker-maven-plugin 比较灵活(可dockerfile也可pom.xml配置)、支持直接操作容器,且仍在持续更新,推荐使用。
  2. com.spotify.dockerfile-maven-plugin 支持dockerfile 近两年无更新,不支持操作容器。
  3. org.springframework.boot.spring-boot-maven-plugin springboot官方插件,无需额外安装,但需要从github下载相关层文件,失败率高,需要多次尝试。

参考代码:https://github.com/lipandeng/docker-maven-demo

上一篇 下一篇

猜你喜欢

热点阅读