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登录阿里云服务器,进行拉取刚刚推送的镜像

然后进行启动镜像

在浏览器查看

跟我们本地的服务一模一样
注意:如果服务正常启动,但是就是访问不了,那应该是网络安全组没有配置,也就是防火墙,需手动开放对应的端口号
windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库的更多相关文章
- 使用spring boot +WebSocket实现(后台主动)消息推送
言:使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!主要是tomcat的兼容与支持. ...
- Docker 学习之镜像导入导出及推送阿里云服务器(三)
在前面两节里主要就是记录一些docker的基本的操作,包括搜索镜像,拉取镜像,根据镜像创建容器等等,在这一节主要就是记录Docker对于镜像文件的导入导出,及推送到阿里云再从阿里云获取镜像. 一.镜像 ...
- windows环境下启动mongodb服务
方法一1.打开命令窗口,切换到mongodb安装目录下的“bin”目录中. 输入命令:cd E:\software\MongoDB\Server\3.4\bin 2.启动服务.输入命令:”mongod ...
- windows环境下解决web服务假死的问题
最近在windows系统在部署web服务器,发现很不稳定.web服务有容易假死,改过配置换过各种web软件,如apache.nginx都不管用. 所以干脆做个简易的定时检测Web服务状态的软件.一旦w ...
- Windows环境下实现Consul服务注册和服务发现
1.首先从官方网站下载Consul,因为我们是使用的Windows系统,所以选择windows版本 https://www.consul.io/downloads.html 2.可以用开发者模式来启动 ...
- windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。
安装 PYQT5 pypcap 环境: windows10_x64 python3.6.3 pycharm2017.2.4 备注: 需要安装 Visual C++ Build Tools 2015 可 ...
- 【springboot】【socket】spring boot整合socket,实现服务器端两种消息推送
参考地址:https://www.cnblogs.com/hhhshct/p/8849449.html
- spring boot hello and docker
主要是想试下spring boot运行在docker里的感觉, 小试牛刀 :) 这是原文,参考一下: https://spring.io/guides/gs/spring-boot-docker ...
- Docker学习<一>--初体验Windows环境下安装
背景 今天想试用spring boot与jwt协议的实现,配套就需要使用redis,但redis似乎windows环境版本部署起来不是那么舒心,果断尝试使用docker. 下载 下载地址: 稳定版:h ...
随机推荐
- c语言程序操作
- springAOP实现操作日志记录,并记录请求参数与编辑前后字段的具体改变
本文为博主原创,未经允许不得转载: 在项目开发已经完成多半的情况下,需要开发进行操作日志功能的开发,由于操作的重要性,需要记录下操作前的参数和请求时的参数, 在网上找了很多,没找到可行的方法.由于操作 ...
- heap_sort
(from wikipedia) 构建步骤: 建成一个大顶堆 第一个元素依次和最后一个元素交换,由于交换后新的堆顶元素可能违反大根堆的性质,因此需要对当前无序区(1,2,...,n-1)调整为新堆 不 ...
- 他山之石,calling by share——python中既不是传址也不是传值
事情是这样的,Python里是传址还是传值令人疑惑,限于本人没有C基础,所以对大家的各类水平层次不一的解答难以确信. 第一个阶段: 在读<python基础教程第二版>的时候感到疑惑,然后群 ...
- hdu 4856 Tunnels 状态压缩dp
Tunnels Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- ArcGIS Pro开发Web3D应用(4)——Portal发布三维没有“发布”选项解决
如题,将三维场景包.slpk上传并发布,未看到发布选项. 问题核心就在于环境没配置好,主要有2点: 1.验证联合托管状态 需要将托管服务器与Portal进行联合,并进行验证,此情况需要在WebAdap ...
- ES6删除对象中的某个元素
const form = { id: '011', name: '测试一', description: '测试demo' } // 目标: 取到删除description属性的对象, 即下文的data ...
- pycharm上传代码到远程服务器
本来不打算写了,可是,还是记不住 源自https://blog.csdn.net/zhangyu4863/article/details/80188207 我的是pycharm2018.1.4专业版: ...
- Shiro 与spring 整合的及简单使用(转)
文章完全转载自: http://www.cnblogs.com/learnhow/p/5694876.html ,大家可以点击访问原文链接,个人仅作学习收藏 ! 本篇内容大多总结自张开涛的<跟 ...
- APP多开教程
https://bbs.feng.com/read-htm-tid-11793134.html 本教程原创,送给有需要的人.本人就为了多开百度云盘传数据,故多开两个百度云盘,亲测一周多没毛病.微信多开 ...