一、前言

最近在学习docker,顺便把之前学习的spring cloud 部署到Docker 中。至于什么是SpringCloud的服务注册与发现,什么是docker,我这里就不作赘述了。可以先去学习这两部分内容,再来看这篇文章,废话不多说了。直接开始!

二、环境准备
        JDK 8
        MAVEN 3.3.9
SpringCloud Dalston.SR4
SpringBoot 1.5.8.RELEASE
       
三、实战eureka-server
    3.1 创建工程
      跟普通创建eurkea-server 工程一样,如下图所示:

目录结构图

3.2 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion> <groupId>com.eureka-server</groupId>
<artifactId>101spring-cloud-eureka-server</artifactId>
<version>0.0.-SNAPSHOT</version>
<packaging>jar</packaging> <name>101spring-cloud-eureka-server</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5..RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<finalName>eureka-server</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::plugin[] -->
<!-- <plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.</version>
<configuration>
<imageName>${docker.image.prefix}/test/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin> -->
<!-- end::plugin[] -->
</plugins>
</build> </project>

这里暂时不用Docker 插件演示,加入了eureka安全验证,所以引入了security依赖。

3.3 application.yml

    spring:
application:
name: eureka-server
server:
port:
#安全认证配置
security:
basic:
enabled: true
user:
name: admin # 用户名
password: admin123 # 用户密码
eureka:
client:
register-with-eureka: false
fetch-registry: false

启动项目测试是否成功。

启动成功!说明我们的项目正常运行没有问题!

四、实战 eureka-client

创建eureka-client步骤跟创建eureka-server 一样,只是注意一些细节。

4.1 application.yml

  spring:
application:
name: eureka-client
server:
port:
eureka:
instance:
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://admin:admin123@localhost:8761/eureka/

因为eureka-server 加入了安全验证,所以客户端注册地址:

http://admin:admin123@localhost:8761/eureka/

如上图所示,说明客户端注册成功。整体流程没问题!接下来部署到docker 中。

五、实战 docker

这里我的docker 搭建在VM虚拟机CentOS7系统中。我安装的docker 版本是目前最新的17ce社区版网上有许多搭建教程,这里我就不啰嗦了。

5.1 打成Jar包
将 eureka-server 和 eureka-client 通过 maven 命令打成 jar 包

右键=> Run As => Maven build => package 然后运行。

这里我们看到已经打包成功了。刷新一下target 目录,可以看到已经打包好的eureka-server

eureka-client 也跟eureka-server 一样。不过需要对application.yml 进行修改

需要将localhost 修改为eureka-server

5.2 制作docker 镜像
这里我通过远程连接工具把jar上传至linux 操作系统中。

编写dockerfile

   FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./eureka-server.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE

通过dockerfile 创建镜像文件

命令

docker build -t 10.0.233.4/eureka-server .   

注:因为搭建了Harbor镜像私服,所以取名为10.0.233.4/eureka-server

.  表示本目录,不可以少。

镜像打包成功,我们修改一下dockerfile 继续上传eureka-client

5.3 运行 docker 镜像

到了最关键的一步了。

分别运行:

docker run --name eureka-server -p : -t 10.0.233.4/eureka-server

docker run --link eureka-server: -p : -t 10.0.233.4/eureka-client

这时候我们可以看到已经实现了在docker 容器中的部署。完!

将SpringCloud Eureka 服务注册与发现部署到docker的更多相关文章

  1. SpringCloud Eureka服务注册及发现——服务端/客户端/消费者搭建

    Eureka 是 Netflix 出品的用于实现服务注册和发现的工具. Spring Cloud 集成了 Eureka,并提供了开箱即用的支持.其中, Eureka 又可细分为 Eureka Serv ...

  2. springcloud(第三篇)springcloud eureka 服务注册与发现 *****

    http://blog.csdn.net/liaokailin/article/details/51314001 ******************************************* ...

  3. SpringCloud——Eureka服务注册和发现

    一.SpringCloud和Dubbo SpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题. content Dubbo SpringCloud ...

  4. SpringCloud 进阶之Eureka(服务注册和发现)

    1. Eureka 服务注册与发现 Eureka 是一个基于REST的服务,用于服务的的注册与发现; Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册 ...

  5. SpringCloud的入门学习之概念理解、Eureka服务注册与发现入门

    1.微服务与微服务架构.微服务概念如下所示: 答:微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题.提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务 ...

  6. SpringCloud(3)---Eureka服务注册与发现

    Eureka服务注册与发现 一.Eureka概述 1.Eureka特点 (1) Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移. (2) Eureka 主管服务 ...

  7. Spring Cloud学习(一):Eureka服务注册与发现

    1.Eureka是什么 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. Eureka ...

  8. Spring Cloud之Eureka服务注册与发现

    解决什么问题 ➟阐述微服务以及服务注册发现的部分概念 ➟阐述Eureka服务注册与发现的部分原理及细节 为什么需要服务中心 过去,每个应用都是一个CPU,一个主机上的单一系统.然而今天,随着大数据和云 ...

  9. SpringCloud - 2. 服务注册 和 发现

    SpringCloud 的服务注册和发现是由Eureka来完成. 1.eureka server 1.1 依赖 <dependency> <groupId>org.spring ...

随机推荐

  1. Docker报错“Dockerfile parse error line 1: FROM requires either one or three arguments”

    看官方文档Format: 以 '#' 开头一行被视为评论,出现在其他位置视为参数. 也就不难理解报错原因:将写在同一行的注释视为参数了. 原Dockerfile: 改为:

  2. File upload - MIME type

    Your goal is to hack this photo galery by uploading PHP code.Retrieve the validation password in the ...

  3. bootstrap中data-*的一些归纳

    最近发现date里面的东西跟常用,但是没有过一个系统化的归纳,今天下午正好有小会空,整合一下如下: 1. data-toggle data-toggle指以什么事件类型触发,常用的如下. data-t ...

  4. 解决国内 Pip 安装速度慢

    1. Windows 在 C:\Users\(用户名)新建文件 pip.ini 2. 编辑 pip.ini 文件 [global]# 防止超时,默认值为 100timeout = 1000# 地址可从 ...

  5. CCF 201803-3 URL映射

    CCF 201803-3  URL映射 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django. ...

  6. 牛顿迭代法(c++)

    编写一个用牛顿法解方程x=tanx 的程序,求最接近4.5和7.7的根 #include <iostream> #include <cmath> using namespace ...

  7. 后台启动es head,关闭shell后es head自动关闭

    后台启动head命令:grunt server & 注意:加上&虽然执行了后台启动,但还是有日志打印出来,使用ctrl+c可以退出.这时如果直接关闭shell, head进程就会终止 ...

  8. dubbo源码分析之过滤器Filter-12

    https://blog.csdn.net/luoyang_java/article/details/86682668 Dubbo 是阿里巴巴开源的一个高性能优秀的服务框架,使得应用可通过高性能的 R ...

  9. vue-router踩坑日记Unknown custom element router-view

    今天笔者在研究vue-router的时候踩到了一个小坑,这个坑是这样的 笔者的具体代码如下:router.js import Home from '@/components/Home.vue'; im ...

  10. python操作mysql基础一

    python操作mysql基础一 使用Python操作MySQL的一些基本方法 前奏 为了能操作数据库, 首先我们要有一个数据库, 所以要首先安装Mysql, 然后创建一个测试数据库python_te ...