io.fabric8:docker-maven-plugin插件在多模块之下使用

准备,装docker,基于Centos(其他的可参考)

  1. 首先安装好docker容器,会自动生成文件/usr/lib/systemd/system/docker.service

  2. 开启docker远程服务

    1. 编辑文件

      vi /usr/lib/systemd/system/docker.service
      
    2. 找到,ExecStart,添加 -H tcp://0.0.0.0:2375(为该值),修改其值为下

      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
      
    3. 重启加载配置,重启服务

      systemctl daemon-reload
      systemctl restart docker
      

在IDEA中,引入插件

  1. 在需要使用该插件的模块中引入插件,一般是在API的模块

    <plugin>
       <groupId>io.fabric8</groupId>
       <artifactId>docker-maven-plugin</artifactId>
       <version>0.33.0</version>
       ....
    </plugin>
    
  2. 使用内部配置,进行生成容器的配置(不能使用外部Dockerfile,多项目下配置的拷贝路径有问题),如下:

    <plugin>
       <groupId>io.fabric8</groupId>
       <artifactId>docker-maven-plugin</artifactId>
       <version>0.33.0</version>
       <configuration>
    	  <!--第一步开启的docker远程服务-->
          <dockerHost>tcp://localhost:2375</dockerHost>
          <verbose>true</verbose>
          <images>
            <image>
    			<!--镜像名称,按需填写-->
                <name>ted005/protacol</name>
                <alias>${project.version}</alias>
                <build>
    				<!--相当于Dockerfile中的from -->
                    <from>openjdk:12</from>
    				<!--相当于Dockerfile中的volume -->
                    <volumes>
                        <volume>/tmp</volume>
                    </volumes>
    				<!--相当于Dockerfile中的workdir -->
                    <workdir>.</workdir>
    				<!--相当于Dockerfile中的entryPoint -->
                    <entryPoint>
                        <exec>
                            <arg>java</arg>
                            <arg>-jar</arg>
                            <arg>server.jar</arg>
                        </exec>
                    </entryPoint>
                    <assembly>
    					<!--生成的模式,默认为dir-->
                        <mode>dir</mode>
    					<!--输出的目录,在镜像容器中的位置及编译生成的jar文件名称-->
                        <targetDir>/server.jar</targetDir>
                        <!---->
                        <descriptorRef>project</descriptorRef>
                    </assembly>
                </build>
       		 </image>
           </images>
        </configuration>
    </plugin>
    

    可参考帮助文档官网:http://dmp.fabric8.io/

  3. 运行命令

    #在父目录中运行打包
    mvn clean package
    #切换进入API所在的目录,需要生成的容器,并编译
    mvn docker:build
    
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐