如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

#1:前提准备

  1.1 首先请确认你的电脑是windows10专业版或企业版,只有这只有这两个版本才带有hyper-v

#2:介绍

  以往我们如果想要在windows上使用docker,都是使用virual box来创建虚拟机,自从windows10发布以来,微软宣布了一系列的linux软件登陆windows,其中就包括了docker,现在我们可以使用windows自带的hyper-v虚拟机来创建运行docker服务。

  InteliiJ Idea作为目前最实用的IDE对Docker也提供了支持。

#3:安装Docker for windows

  3.1 从官网下载docker for windows,https://store.docker.com/editions/community/docker-ce-desktop-windows,下载完毕后进入安装界面,docker会自动安装,界面一闪而过,电脑运行速度还不错,安装完成之后,docker会弹个窗告诉你hyper-v未开启,像这样。

  不过如果你现在点击OK基本上是没有用的,得先去BIOS里打开硬件虚拟化,本机是惠普的机器,开启点按f10进入bios,其他品牌的机器自行搜索进入,像这样

重启电脑后docker会自动运行,依然弹出上面那个hyper-v未开启的窗口,这回可以点击OK让docker来帮你开启hyper-v,或者是自己在控制面板-程序-程序和功能-启用或关闭windows功能里开启hyper-v

到此,我们的docker for windows已经安装完成。在命令行中输入docker --version可以查看已经安装的docker版本

  3.2 使用docker中的镜像

    3.2.1  先用官方镜像作个示例

      使用 docker search <imageName> 来搜索对应的镜像

然后使用 docker pull <镜像名:tag> 例如docker pull nginx:latest  ,tag不输入是默认拉取最新的 

当镜像下载玩之后我们通过docker images命令来查看所有本地的镜像

我这里下载了java以及nginx的镜像 其中还有我已经打包好的spring cloud的eureka注册中心的镜像

使用docker run命令来运行镜像,我这里运行nginx的镜像

使用docker运行nginx成功后访问localhost:80就可以访问到nginx的主页,说明我们已经在docker运行了我们的第一个镜像,虽然是官方镜像,但心里的成就感还是不低的。

好的,在运行了第一个镜像之后,我们要开始在IntelliJ IDEA中使用docker并构建我们的第一个spring boot程序放到docker中去运行

#4:IDEA的准备工作

1:Docker插件,首先需要在你的IDEA中安装Docker插件,定位到File-Setting-Plugins后搜索Docker Integration安装。

2:配置Docker服务器,在IDEA中定位到File-Setting-build,Execution,Deployment-Docker

如果你没用使用Docker Machine来管理虚拟机的需求的话,我们使用默认的Docker守护进程就OK了,不过在此之前我们还需要设置一下docker

将docker与本地的连接设置为不需要TLS加密。

在完成这一步之后,可以在IDEA的配置窗口看到成功连接到了本机上的docker

到这里,我们已经完成对docker的配置,接下来就可以进入真正的实施阶段。

#5:创建spring cloud项目

 1.首先在Idea中创建一个spring boot项目,怎么创建在此就不再赘述了

创建完成之后,我们在pom.xml中添加依赖项

本地编写的是spring cloud的注册中心项目,所以还需要加上

spring的版本需要与spring cloud的版本号对应,详细的对应信息可以去http://projects.spring.io/spring-cloud/查看

由于本次只是简单地示范如何在IDEA中部署spring boot项目到docker中,所以在项目中只需要对eureka注册中心进行简单的配置就OK了,

在启动类中加上注解标明这是一个eureka注册中心的项目

在配置文件中配置端口

然后我们就完成了项目的编写,可以先启动看看项目是否能够启动,启动之后我们访问http://localhost:8761/ ,可以看到我们的eureka注册中心已经启动,项目编写没有问题

接下来就到了如何把项目部署到docker中去的问题了

#6:将项目部署到Docker中

首先我们需要编写Dockerfile文件,在src-main目录下新建docker文件夹,然后在其中新建Dockerfile文件

文件内容如下

其中红框的地方是本项目打包之后的jar包名字,默认是artifactId-version.jar,同时我们可以看到在左上叫有个运行的标记,很对,这个就是用来在IDEA构建jar包到镜像,然后放到Docker中运行的按钮,不过我们还是需要先配置一下

我们先配置镜像名称以及容器名称

然后需要对docker容器需要映射的端口号进行配置

然后我们点击run,可以看到,很快就报错了,这是由于DockerFile与我们生成的jar包不在同一个文件夹造成的。

为了解决这个问题,我找到了两种方案:

方案1:先使用maven命令

mvn clean package

对项目进行打包,命令执行完毕之后可以在target目录下看到已经打包完成的jar包

然后把jar包放到Dockerfile所在的目录下,像这样

然后接着点击Dockerfile中的运行,

在Deploylog窗口中,可以看到,这次构建镜像就成功了,在log窗口中可以看到我们的项目在运行过程中打出的日志信息

很明显,这次的构建和部署都成功了,访问http://localhost:8761/,出现了我们想要看到的东西。

在命令行中使用docker ps 命令查看正在运行的容器信息

可以看到,我们在IDEA中编写的项目已经运行到了docker中。

方案2:使用docker-maven-plugin插件,在pom.xml中配置插件

然后在ternimal中运行 mvn clean package -DskipTests=true docker:build命令,打包项目并构建镜像,命令执行完毕可以看到

在docker窗口下,我们构建的镜像已经出现在窗口中了

右键点击创建一个新的容器

跳转到我们的部署配置里面,只需要像方案1中的一样进行配置完毕后点击run就OK了,访问http://localhost:8761/,同样可以看到我们的eureka的运行信息。docker ps 命令也显示我们的容器已经运行起来。

#7:总结

好的,到这里我们先是在安装了windows版的docker,然后使用IDEA创建了一个spring cloud项目,并在IDEA中将此项目部署到了docker中,本次随笔就到此为止了。

如果你对本篇博客有兴趣的话,欢迎共同交流和讨论

有任何问题请联系hei12138@outlook,com

如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目的更多相关文章

  1. IntelliJ IDEA上创建maven Spring MVC项目

    IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

  2. IntelliJ 启动不同端口的两个spring cloud项目

    IntelliJ 启动不同端口的两个spring cloud项目 1,使用maven进行clean package 2,在Terminal界面,输入java -jar xxx.jar --server ...

  3. SpringCloud教程 | 第十一篇: docker部署spring cloud项目

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  4. 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc11-docker/ 本文出自方志朋的博客 一.docker简介 ...

  5. SpringCloud 教程 (四) docker部署spring cloud项目

    一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...

  6. 使用IntelliJ IDEA创建简单的Spring Boot项目

    方法一: File - New -Project 创建结束后进行测试运行,修改代码如下: package com.springboot.testone; import org.springframew ...

  7. 【spring cloud】【docker】使用docker在centOS上部署spring cloud微服务架构服务

    项目GitHub地址 ================================================================================== 部署过程: ...

  8. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  9. Spring Cloud(三):服务提供与调用 Eureka【Finchley 版】

    Spring Cloud(三):服务提供与调用 Eureka[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  上一篇文章我们介绍了 Eureka 服务 ...

随机推荐

  1. 使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法

    CEF(Chromium Embedded Framework, 嵌入式Chromium框架)是C/C++开发的库 目前 Google Chrome(Google浏览器),Chromium浏览器,Op ...

  2. 创建DNS子域及view

    author:JevonWei 版权声明:原创作品 子域 子域同父域在同一个服务器上 新建子域jevon.danran.com vim /etc/named.rfc1912.zones zone &q ...

  3. IOS学习【前言】

    2016-1-14 16年开始时导师安排任务,开始IOS学习之旅  经过几天的学习,感觉还是需要作比较多的学习笔记,因此开始用博客记录整个过程,方便以后查看学习与分享. 主要记录一些关键的问题处理方法 ...

  4. 命令行利用KVM创建虚拟机

    一,实验环境 OS:CENTOS6.5 X86_64 二,KVM宿主环境配置 1.cat /proc/cpuinfo | egrep 'vmx|svm'  //查看是否支持虚拟技术 2.安装KVM相关 ...

  5. 201521123042 《java程序设计》 第八周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. ①泛型定义:泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展, ...

  6. 201521123063 《Java程序设计》第三周学习总结

    1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2.书面作业 ...

  7. 201521123003《Java程序设计》第2周学习总结

    1. 本章学习总结 你对于本章知识的学习总结 学习了java中各种数据类型的使用 掌握了基本类型的转换 了解string和stringbuilder的区别以及字符串池的原理 学会了使用package管 ...

  8. 201521123106 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  9. 《Java课程设计》

    一. 本组课题 简易文件资源管理器 需求分析 查找文件功能:可以根据指定的目录名与待查找的文件,在指定目录中进行查找,并返回结果 实现文件的拷贝与粘贴功能 实现文本类文件(.txt, .java, . ...

  10. 201521123030 《Java程序设计》 第10周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? 在fi ...