使用Maven来构建Docker镜像并上传到私服仓库

使用Maven来构建Docker镜像并上传到私服仓库

    maven是一个强大的项目管理与构建工具,使用maven来构建docker镜像,并自动上传到私服仓库,那么就大大简化了工作。

看到网上大部分都是使用的Spotify公司的插件,这里我也选则此插件进行学习。

一 pom.xml中添加docker的插件

 
        
            
                com.spotify
                docker-maven-plugin
                0.4.13
                
                   true    
                    my/eureka:0.0.1  
                    lwieske/java-8    
                    http://192.168.10.72:2375  
                    ["java","-jar","/${project.build.finalName}.jar"] 
                    
                                                                     
                            /                         
                            ${project.build.directory}  
                            ${project.build.finalName}.jar  
                        
                    
                
            
        
    

二 docker开启远程api端口

修改 /etc/sysconfig/docker文件

vi /etc/sysconfig/docker

在最下面添加一行

DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'

再修改 /usr/systemd/system/docker.service

vi /usr/systemd/system/docker.service
在ExecStart后面添加 $DOCKER_OPTS \

使用Maven来构建Docker镜像并上传到私服仓库_第1张图片

重新加载配置文件

systemctl daemon-reload 

重启docker

systemctl restart docker

三 开启防火墙端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

重新载入配置

irewall-cmd --reload

四 执行mvn命令来构建docker镜像

使用Maven来构建Docker镜像并上传到私服仓库_第2张图片

运行命令

使用Maven来构建Docker镜像并上传到私服仓库_第3张图片

查看服务器上镜像列表


运行镜像

使用Maven来构建Docker镜像并上传到私服仓库_第4张图片

查看结果

使用Maven来构建Docker镜像并上传到私服仓库_第5张图片

可以看到我们的项目已经成功启动了,并且在主机可以直接访问,这说明docker自动帮我们开启了防火墙的端口访问。

如果要使用dockerfile构建镜像

使用Maven来构建Docker镜像并上传到私服仓库_第6张图片

FROM lwieske/java-8
VOLUME /tmp
ADD discovery-1.0-SNAPSHOT.jar discovery.jar
EXPOSE 8002
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","discovery.jar"]
 
                com.spotify
                docker-maven-plugin
                0.4.13
                
                    true    
                    my/eureka:0.0.2  
                    http://192.168.10.73:2375  
                    ${project.basedir}/src/main/docker   
                    
                                                                     
                            /                         
                            ${project.build.directory}  
                            ${project.build.finalName}.jar  
                        
                    
                
            


使用Maven来构建Docker镜像并上传到私服仓库_第7张图片

测试运行dockerfile构建的镜像

使用Maven来构建Docker镜像并上传到私服仓库_第8张图片

使用Maven来构建Docker镜像并上传到私服仓库_第9张图片

使用Maven来构建Docker镜像并上传到私服仓库_第10张图片

五 将docker绑定到mvn其它命令执行

比如我们想在项目mvn package的时候同时构建docker上传到服务器。


        
            
                com.spotify
                docker-maven-plugin
                0.4.13
                
                    
                        build-image     
                        package   
                        
                            build   
                        
                    
                               
                 
                   true    
                    my/eureka:0.0.1  
                    lwieske/java-8    
                    http://192.168.10.72:2375  
                    ["java","-jar","/${project.build.finalName}.jar"] 
                    
                                                                     
                            /                         
                            ${project.build.directory}  
                            ${project.build.finalName}.jar  
                        
                    
                
            
        
    

可以看到,我们在原来的基础上只是新增了标签内容,运行测试结果

使用Maven来构建Docker镜像并上传到私服仓库_第11张图片

使用Maven来构建Docker镜像并上传到私服仓库_第12张图片

六  mvn构建docker后并push到私服仓库


        
            
                com.spotify
                docker-maven-plugin
                0.4.13
                
                    
                        build-image     
                        package   
                        
                            build   
                        
                    
                     
                       image-tag
                       package
                       
                           tag      
                       
                       
                           my/eureka:0.0.1   
                           192.168.10.73:5000/my/eureka:0.0.1   
                       
                   
                   
                       package-push
                       package
                       
                           push    
                       
                       
                           192.168.10.73:5000/my/eureka:0.0.1  
                       
                   

                               
                 
                   true    
                    my/eureka:0.0.1  
                    lwieske/java-8    
                    http://192.168.10.73:2375  
                    ["java","-jar","/${project.build.finalName}.jar"] 
                    
                                                                     
                            /                         
                            ${project.build.directory}  
                            ${project.build.finalName}.jar  
                        
                    
                
            
        
    
可以看到,又绑定了两个命令,类似于在docker中先给镜像打标签后再push到仓库

测试运行

使用Maven来构建Docker镜像并上传到私服仓库_第13张图片

 将镜像推送到私有库,报协议错误
error:Get https://192.168.10.73:5000/v1/_ping: http: server gave HTTP response to HTTPS client
在/etc/docker下,创建daemon.json文件,写入:
{ "insecure-registries":["192.168.10.73:5000"]}  
或者
1.修改/etc/sysconfig/docker文件,在最后增加一行DOCKER_OPTS
DOCKER_OPTIONS="--insecure-registry 192.168.10.73:5000"
2.修改/usr/lib/systemd/system/docker.service
在[Service]的ExexStart=下面增加一行$DOCKER_OPTIONS 

注意:改成自己服务器ip地址

重启docker后,再次执行

使用Maven来构建Docker镜像并上传到私服仓库_第14张图片

使用Maven来构建Docker镜像并上传到私服仓库_第15张图片

push成功,我们看一下远程仓库是否有这个镜像

使用Maven来构建Docker镜像并上传到私服仓库_第16张图片

使用Maven来构建Docker镜像并上传到私服仓库_第17张图片

七 push镜像到docker hub 上

在maven的 settings.xml 中添加


    
        docker-hub
        DockerHub 的账号
        DockerHub 的密码
        
            你的eamil
        
    

pom.xml中修改如下


                com.spotify
                docker-maven-plugin
                0.4.13
                
                    true    
                    my/eureka:0.0.2  
                    http://192.168.10.73:2375  
                    ${project.basedir}/src/main/docker   
                    
                                                                     
                            /                         
                            ${project.build.directory}  
                            ${project.build.finalName}.jar  
                        
                    
                docker-hub   
                
            

你可能感兴趣的:(Docker)