最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,可是教程里面用的事Mac环境,个人是Windows环境,并且课程里面没有讲解docker本地打包所须要的必备环境,最后我是利用三个晚上终于解决了这个问题,故写此文章总结一下,有写的不对的地方,请多包涵java
先创建一个spring boot 服务,这个服务比较简单,我也是根据教程上面创建的,使用的事idea工具web
new 一个projectspring
下一步,取名docker-demodocker
下一步,选择web组件就能够了shell
下一步,选择本身对应的工程目录apache
点击完成,在新窗口中打开docker-demo工程,这就是一个最基本springboot应用windows
咱们在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文件里配置以下springboot
<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登陆阿里云服务器,进行拉取刚刚推送的镜像
而后进行启动镜像
在浏览器查看
跟咱们本地的服务如出一辙
注意:若是服务正常启动,可是就是访问不了,那应该是网络安全组没有配置,也就是防火墙,需手动开放对应的端口号