• windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库


    最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有讲解docker本地打包所需要的必备环境,最后我是利用三个晚上终于解决了这个问题,故写此文章总结一下,有写的不对的地方,请多包涵

           先建立一个spring boot 服务,这个服务比较简单,我也是根据教程上面建立的,使用的事idea工具

      new 一个project

      

      下一步,取名docker-demo

      

      下一步,选择web组件就可以了

      

      下一步,选择自己对应的工程目录

      

      点击完成,在新窗口中打开docker-demo工程,这就是一个最基本springboot应用

      

      我们在DockerDemoApplication添加如下代码:

        @RequestMapping("/user/find")
        @ResponseBody
        public Object findUser(){
            Map<String,String> map = new HashMap<String,String>();
            map.put("name","xdclass.net");
            map.put("age","28");
            return map;
        }

      

      然后启动服务,端口默认是8080,我们在浏览器输入地址:localhost:8080/user/find

      

      在pox文件里配置如下

    <docker.image.prefix>xdclass</docker.image.prefix>

    <!--项目打包的名称-->
    <finalName>docker-demo</finalName>
    <plugin>
         <groupId>com.spotify</groupId>
         <artifactId>dockerfile-maven-plugin</artifactId>
         <version>1.3.6</version>
         <configuration>
             <repository>${docker.image.prefix}/${project.artifactId}</repository>
                  <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                  </buildArgs>
         </configuration>
    </plugin>

    添加Dockerfile文件

    Dockerfile文件里添加如下指令

    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ARG JAR_FILE
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]

    按照教程里面现在就开始打包镜像,打开idea terminal窗口,输入mvn install dockerfile:build

    执行失败,抛出了一个异常信息

    Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.6:build (default-cli) on project docker-demo: Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingExcep
    tion: org.apache.http.conn.HttpHostConnectException: Connect to 192.168.99.100:2376 [/192.168.99.100] failed: Connection timed out: connect -> [Help 1]

    经查询,是本地没有安装docker环境,所以下面我们开始安装本地docker环境

     首先安装idea docker插件

     打开file->setting->Plugins,搜索docker,然后点击search in respositories,如下图

    点击安装

    我是提前下载好Docker-181.3007.4.zip包,本地安装

     然后重新启动idea工具,再次打开file->setting

     已经安装成功了,而且Dockerfile中的指令已经有了颜色变化,如下所示

    下面最关键的是下载DockerToolbox-18.03.0-ce.exe安装包,并进行安装(下载地址http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/)

    双击开始安装:咱们不勾选

    下一步,选择安装目录

    下一步

     

    下一步

    下一步

    安装成功

    安装成功会出现下面三个图标

    双击打开Oracle VM VirtualBox

    然后再双击Docker Quickstart Terminal,打开之后会自动安装默认虚拟机,会有几分钟等待时间

    出现这个画面,说明已经安装默认虚拟机已经安装成功,我们可以看下Oracle VM VirtualBox

    已经有一个正在运行的默认虚拟机了,到这一步基本上安装完成,我们在执行一下mvn install dockerfile:build

    看到没有,已经在执行Dockerfile中的指令了,但是非常的慢,因为我们本地没有进行镜像加速,所以我们给本地docker配置镜像加速

    参照:https://blog.csdn.net/slibra_L/article/details/77505003

    第一步:

    在https://www.daocloud.io/mirror进行注册登录

    然后点击如下图标:

    跳转到下一个页面,拉到最下面

    复制http://f1361db2.m.daocloud.io然后找个文本先备份一下

    然后双击打开

    点击DOCKER CU,会出现下面的弹出框

     然后分别执行如下指令

    docker-machine ssh default
      sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=http://f1361db2.m.daocloud.io |g" /var/lib/boot2docker/profile
    exit

    标红的地址就是刚刚备份的地址

    然后默认虚拟机和docker重启动就ok了,我们再试一下mvn install dockerfile:build

    很快就执行完成了

    然后我们在Docker Quickstart Terminal,输入docker images 进行查看镜像

    说明已经打包镜像成功了

    接下来,我们将本地的镜像推送到阿里云镜像仓库(需自己购买阿里云服务器,然后开通个人镜像仓库,也可以使用其他的云服务器,比如腾讯云),打开阿里个人镜像仓库

    点击管理

    这里给出镜像推送的三个步骤:登录阿里云服务器、给本地镜像打一个标签、推送

    推送成功,打标签的时候,一定要选择自己本地的镜像id

    然后查看一下阿里云服务器的镜像仓库,如图所示

    然后,用xshell登录阿里云服务器,进行拉取刚刚推送的镜像

     然后进行启动镜像

    在浏览器查看

    跟我们本地的服务一模一样

    注意:如果服务正常启动,但是就是访问不了,那应该是网络安全组没有配置,也就是防火墙,需手动开放对应的端口号

  • 相关阅读:
    20200807日报
    20200806日报
    《大道至简》读书感悟
    20200805日报
    20200804日报
    20200803日报
    20200802日报
    vue中mounted内如何调完异步方法再渲染
    小程序画布识别iPhone11
    np.meshgrid() 生成网格坐标函数
  • 原文地址:https://www.cnblogs.com/hjw-zq/p/10701098.html
Copyright © 2020-2023  润新知