028-86261949

当前位置:首页 > 技术交流 > maven构建docker镜像

maven构建docker镜像

2019/12/17 10:38 分类: 技术交流 浏览:1

 

一、 原理分析

  由于我们开发pc上面没有docker,所以没办法直接打包镜像,所以要调用远程主机docker进行。并且远程主机docker默认不支持远程访问,所以需要开启远程。然后我们在项目中以docker maven插件方式进行打包镜像。

具体步骤如下:

   1 远程主机docker支持远程访问

   2 本地项目配置maven docker插件,并允许打包镜像

 

 

二 、远程主机docker支持远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

修改后如下(2)刷新配置,重启服务

systemctl daemon-reload

systemctl restart docker

docker start registry

 

172.16.4.194:2375

 

防火墙对该端口放行

firewall-cmd --permanent --zone=public --add-port=2375/tcp 

systemctl restart firewalld

 

 

三 、本地项目配置maven docker插件,并允许打包镜像

 

3.1 配置docker maven插件

<build>

    <finalName>eureka</finalName>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

            <!--这里写上main方法所在类的路径-->

            <configuration>

                <mainClass>cn.itsource.hrm.EurekaServer7001Application</mainClass>

            </configuration>

            <executions>

                <execution>

                    <goals>

                        <goal>repackage</goal>

                    </goals>

                </execution>

            </executions>

        </plugin>

        <!--docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin-->

        <plugin>

            <groupId>com.spotify</groupId>

            <artifactId>docker-maven-plugin</artifactId>

            <version>0.4.13</version>

            <configuration>

                <imageName>172.16.4.194:5000/${project.artifactId}:${project.version}</imageName>

                <baseImage>jdk1.8</baseImage>

                <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>

                <resources>

                    <resource>

                        <targetPath>/</targetPath>

                        <directory>${project.build.directory}

                        </directory>

                        <include>${project.build.finalName}.jar</include>

                    </resource>

                </resources>

                <dockerHost>http://172.16.4.194:2375</dockerHost>

            </configuration>

        </plugin>

    </plugins>

  </build>

 

以上配置会自动生成Dockerfile

FROM jdk1.8

ADD app.jar /

ENTRYPOINT ["java","‐jar","/app.jar"]

 

 

3.2 打包镜像并运行容器

  3.2.1 打包

在windows的命令提示符下,进入工程hrm_eureka_7001所在的目录

进入Eureka 所在的目录,输入以下命令,进行打包和上传镜像

mvn docker:build ‐DpushImage

 

  3.2.2 查看镜像

进入宿主机 , 查看镜像

输出如上内容,表示微服务已经做成镜像

浏览器访问 http://192.168.184.141:5000/v2/_catalog ,输出

{"repositories":["hrm_eureka"]}

 

  3.2.2 启动容器

docker run ‐di ‐‐name=eureka ‐p 7001:7001

192.168.184.141:5000/hrm_eureka:1.0‐SNAPSHO

 

#标签:maven,docker镜像