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

 

如何使用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

 
 
标签: dockerIDEAspring cloud

Spring Cloud项目的更多相关文章

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

    如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 #1:前提准备 1.1 首先请确认你的电脑是windows10专业版或企业版,只有这 ...

  2. Spring Cloud项目中通过Feign进行内部服务调用发生401\407错误无返回信息的问题

    问题描述 最近在使用Spring Cloud改造现有服务的工作中,在内部服务的调用方式上选择了Feign组件,由于服务与服务之间有权限控制,发现通过Feign来进行调用时如果发生了401.407错误时 ...

  3. 【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因

    之前在spring boot服务中使用@ControllerAdvice做自定义异常拦截,完全没有问题!!! GitHub源码地址: 但是现在在spring cloud中使用@ControllerAd ...

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

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

  5. spring cloud 项目创建过程

    在使用spring cloud 项目创建微服务项目时,遇到过很多坑,现在我将整理如下: 条件:Idea 开发工具 maven 项目 1. 创建一个空的mvn项目. 2. 创建完了就添加Module,首 ...

  6. 关于spring cloud项目搭建问题

    spring cloud 是基于spring boot搭建,父项目中引入依赖时候一定要将spring boot和spring cloud 的版本号对应起来,要不然jar包报错,项目也启动不起来!!!下 ...

  7. Spring cloud项目实践(一)

    链接地址:http://sail-y.github.io/2016/03/21/Spring-cloud%E9%A1%B9%E7%9B%AE%E5%AE%9E%E8%B7%B5/ 什么是Spring ...

  8. Spring Cloud项目之断路器集群监控Hystrix Dashboard

    微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完 ...

  9. Spring Cloud项目MVN编译 -- Non-resolvable import POM

    最近利用闲余时间,打算搭建一套基于Spring Cloud G版的微服务架构(Spring boot 2.1.0),一顿操作之后,IDEA也没有提示什么错误,自认为微服务搭建完毕.启动项目前,习惯性的 ...

随机推荐

  1. OpenCV —— 跟踪与运动

    理解物体运动主要包含两个部分:识别和建模 识别在视频流后续的帧中找出之前某帧镇南关的感兴趣物体 寻找角点 可跟踪的特征点都称为角点,从直观上讲,角点(而非边缘)是一类含有足够信息且能从当前帧和下一帧中 ...

  2. groupmod---更改群组识别码或名称

    groupmod命令用于更改群组识别码或名称. 需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作. 语法 groupmod [-g <群组识别码> <-o> ...

  3. 今日SGU 5.2

    SGU123 题意:求和 收获:无 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="< ...

  4. 高性能计算机传奇(vamei)

    高性能计算机是用网络将多台计算机连接在一起.并构成一个统一的系统,从而拥有远超个人电脑的计算能力.这样利用网络,让计算机合作工作的并行系统又称为集群(cluster).server.分布式计算机.超级 ...

  5. sqlserver存储过程实现多表分页

    if @PageIndex = 1 begin if @strWhere != ’’ set @strSQL = ’select top ’ + str(@PageSize) +’ ’+@strGet ...

  6. jQuery返回值:jQuery对象

    $(function(){ //返回值 alert($); //jQuery //以下返回的全是jQuery对象 alert($()); alert($('#box')); alert($('#box ...

  7. iTOP-4412开发板p2p视频

    整体框架: 一.发送端 1.摄像头通过V4L2接口得到YUV视频格式,可以在win7上用yuvplayer播放 2.使用4412硬件编码模块MFC提供的接口进行硬件编码,得到.264文件,可以在win ...

  8. <link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /> <LINK href="Xubuntu.ico" rel="shortcut icon"> <link href="Xubuntu.ico" rel="B

    <link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /& ...

  9. CISP/CISA 每日一题 18

    CISSP 每日一题(答)What is the purpose of an access review and audit? Checkto ensure that users do not hav ...

  10. 洛谷——P1781 宇宙总统

    https://www.luogu.org/problem/show?pid=1781 题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人 ...