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

时间:2021-03-08 11:26:02

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

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

  new 一个project

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

  下一步,取名docker-demo

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

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

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

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

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

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

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

  我们在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;
}

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

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

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

  在pox文件里配置如下

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

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

<!--项目打包的名称-->
<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>

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

添加Dockerfile文件

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

Dockerfile文件里添加如下指令

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

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

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

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

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

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,如下图

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

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

点击安装

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

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

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

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

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

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

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

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

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

下一步,选择安装目录

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

下一步

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

下一步

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

下一步

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

安装成功

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

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

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

双击打开Oracle VM VirtualBox

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

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

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

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

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

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

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

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

第一步:

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

然后点击如下图标:

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

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

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

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

然后双击打开

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

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

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

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

然后分别执行如下指令

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

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

很快就执行完成了

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

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

说明已经打包镜像成功了

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

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

点击管理

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

这里给出镜像推送的三个步骤:登录阿里云服务器、给本地镜像打一个标签、推送windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库

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

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

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

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

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

然后进行启动镜像

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

在浏览器查看

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

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

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