DOCKER - MAVEN打包发布DOCKER镜像

Itachi 2019年12月13日 231次浏览

背景

针对与我们Java开发,想快速部署以及维护自己的程序来说,面对一台Linux,可能要装很多环境, 以及配置..很是麻烦...现在我们可以在pom文件里可以直接集成docker插件只需一行命令即可编译成docker镜像并发布到服务器上!

环境

CentOS7
Docker 18.09.8

安装docker环境请参考:
离线环境安装一键自动安装Docker

如何实现?

文章内所涉及到的文件请到此下载
链接: https://pan.baidu.com/s/1da_Ag5KSeqag_zbq0PYLtA 提取码: m8tj

  1. 打开POM.xml复制粘贴如下插件:

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <!-- docker默认远程端口为2375.此处我修改过.所以是4243 -->
                    <dockerHost>http://10.211.55.4:4243</dockerHost>
                    <!--用于指定镜像名称-->
                    <imageName>${project.name}:${project.version}</imageName>
                    <!--用于指定基础镜像,相当于Dockerfile中的FROM指令-->
                    <baseImage>alpine:base</baseImage>
                    <!--相当于Dockerfile的ENTRYPOINT指令-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <!--是否跳过docker build-->
                    <skipDockerBuild>false</skipDockerBuild>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  2. dockerHost: 填写自己docker所部署的公网IP地址.端口号查询docker.service文件内!
    vim /usr/lib/systemd/system/docker.service

    image.png

  3. baseImage:基础镜像,我这里采用了alpine.文章最后会附上所涉及到的文件

    将alpine导入docker镜像中.docker load < ./alpine.tar

    image.png

  4. 新建docker文件夹.将docker-assembly.xml放入
    image.png

  5. 输入如下命令

    clean compile package -Dmaven.test.skip=true docker:build

    image.png

    点击执行!

  6. 执行前注意事项:

    请关闭防火墙:如果是centos7请执行

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    如果使用的阿里云或者腾讯云等服务器.请去服务器控制台配置策略组.将docker的端口开放出来

  7. 上传成功!

    image.png

    image.png