当前位置: 代码迷 >> 综合 >> docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)
  详细解决方案

docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

热度:27   发布时间:2023-10-02 02:25:56.0

  第一部分 docker 安装私有仓库,并推送镜像到私有仓库.  

     1, 安装 docker toolbox,比较简单下一步,下一步,此处不做过多详述.

      2,安装完之后 执行 命令 查看监听端口 netstat -tlunp ,查看 代理端口2376是否打开.(windows默认都是打开的)

        docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

        3, 搭建仓库(从上往下执行)

               1)[root@localhost ~]# docker pull registry 

                2)[root@localhost ~]# docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --             name registry registry:latest

                执行成功则私有仓库搭建成功

       4, 往私有仓库push镜像.

              1)拉取镜像文件

               [root@localhost ~]# docker pull hello-world

              2)给镜像打tag.(这一步是必须的,前缀也是有意义的, 暂时以本机IP为例子. docker安装在本机上)

                [root@localhost ~]# docker tag hello-world 10.0.7.152:5000/hello-world:latest 

              3)push镜像

                [root@localhost ~]# docker push 10.0.7.152:5000/hello-world:latest

            发现会报以下错误:The push refers to a repository [10.0.7.152:5000/hello-world]
         Get https://10.0.7.152:5000/v1/_ping: http: server gave HTTP response to HTTPS client

          原因是docker私有仓库服务器,默认是基于https传输的,所以我们需要在docker做相关设置,不使用https  传输

           [root@localhost ~]# vi /etc/docker/daemon.json  如下图

            docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机) 

         docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

             4,重启docker 重新push 发现成功

                 查看私有仓库镜像 :1浏览器访问或者default里面 curl方法,http://10.0.7.152:5000/v2/_catalog

                                                      curl http://10.0.7.152:5000/v2/_catalog

                                                2, ls /registry/docker/registry/v2/repositories

  

   第二部分 ide 自动打包java应用,打包镜像 并推送镜像到私有仓库.  (暂时以eclipse为例);

              1,编写一个springboot的hello world 应用,(此处不做叙述比较简单).

              2,配置pom 文件.

                docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

                    <!-- 绑定仓库地址 -->
             <docker.image.prefix>10.0.7.152:5000</docker.image.prefix>

       docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

 <!--编译部分配置 -->

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>

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

   </plugin> 
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <forceTags>true</forceTags>
                    <imageName>${docker.image.prefix}/test4</imageName>
                    <repository>${docker.image.prefix}/test4</repository>                    
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                   <!--  <serverId>docker-hub</serverId>
                    <registryUrl>https://${docker.image.prefix}/v2/</registryUrl> -->
                </configuration>
            </plugin>
        </plugins>
    </build>

          3,编写dockerfile文件

                1)路径放到根目录

              docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

                2)内容如下

                 #指定以openjdk:8-jre 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境
                 FROM openjdk:8-jre
                 # 挂载目录,默认的安装jar包位置:/tmp
                     VOLUME /tmp
                 # 将上一步的jar包copy到镜像中的根目录,并重命名为app.jar
                    ARG JAR_FILE
                 #将当前jar 复制到容器根目录下
                COPY ${JAR_FILE} app.jar
               #暴露容器端口为50051 Docker镜像告知Docker宿主机应用监听了50051端口
               EXPOSE 3005
                 # 启动jar包(可根据自己项目复杂度调整)
                    ENTRYPOINT ["java","-jar","/app.jar"] 

              3)mvn执行命令 

                   package dockerfile:build dockerfile:push

                  docker toolbox + eclipse + springboot 实现java应用自动打包到私有仓库(客户端,服务端同机)

       4) 提示build SUCCESS(第一次执行比较慢,需要下载 jdk镜像,请耐心等待)

                去查看镜像是否推送成功 

                  http://10.0.7.152:5000/v2/_catalog

          ps:  上文 dockerflie 中FROM openjdk:8-jre 默认使用的是公有镜像,使用自己私有镜像作为基础镜像可以改成如下写法

                 FROM 10.0.7.158:5000/jdk1.8:v1.0   

 

        结语: 私有仓库上传镜像可以配置用户,密码权限,本文就不做陈述了,可以到网上找例子,本文仅仅针对入门级人群,各个操作步骤的含义,可以后续网上查询.

                                                                                                     

                 有疑问,请求留言                       有问题,欢迎可以加QQ 1360215811 交流

  相关解决方案