1. 程式人生 > >SpringCloud | Docker 學習系列 | 將SpringCloud Eureka 服務註冊與發現部署到docker詳解

SpringCloud | Docker 學習系列 | 將SpringCloud Eureka 服務註冊與發現部署到docker詳解

一、前言

         最近在學習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.0</modelVersion>

	<groupId>com.eureka-server</groupId>
	<artifactId>101spring-cloud-eureka-server</artifactId>
	<version>0.0.1-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.8.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</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.3</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: 8761
#安全認證配置
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: 8750
eureka:  
  instance:  
    prefer-ip-address: true
  client: 
    serviceUrl: 
      defaultZone: http://admin:[email protected]:8761/eureka/
因為eureka-server 加入了安全驗證,所以客戶端註冊地址:
http://admin:[email protected]: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 8761

通過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 8761:8761 -t 10.0.233.4/eureka-server

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


這時候我們可以看到已經實現了在docker 容器中的部署。完!

之後我會上傳至github中。

相關推薦

SpringCloud | Docker 學習系列 | SpringCloud Eureka 服務註冊發現部署docker

一、前言         最近在學習docker,順便把之前學習的spring cloud 部署到Docker 中。至於什麼是SpringCloud的服務註冊與發現,什麼是docker,我這裡就不作贅述了。可以先去學習這兩部分內容,再來看這篇文章,廢話不多說了。直接開始!二、

SpringCloud | Docker 學習系列 | Kubernetes 學習 SpringCloud Eureka 服務註冊發現部署docker中並放入到Kubernetes中管理

一、前言      很早之前就想寫這篇文章,終於有點時間來填坑了。之前都是在公司伺服器上搭建的,這次在自己的電腦上搭建好了環境,再來完善這篇部落格。二、環境準備     此次環境已經搭建完畢     kubernetes  v1.9.0     docker 17.03.2-

springcloud學習筆記一:eureka服務註冊發現

springcloud可以方便的幫我們完成微服務架構,它擁有多個子專案,可以去官網簡單看下介紹。 其中component下的代表著現有的子專案,本次所記錄的eureka就是其中spring-cloud-netflix裡的一個模組。 eureka在我們微服務架構中實現的就是服務發現與

SpringCloud系列——Zuul 動態路由 SpringCloud系列——Ribbon 負載均衡 SpringCloud系列——Eureka 服務註冊發現 SpringCloud系列——Ribbon 負載均衡

  前言   Zuul 是在Spring Cloud Netflix平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架,是Netflix基於jvm的路由器和伺服器端負載均衡器,相當於是裝置和 Netflix 流應用的 Web 網站後端所有請求的前門。本文基於上篇(SpringCloud系列——Ribbon

SpringCloud學習 - Eureka服務註冊發現

Eureka服務註冊與發現 書籤: (1)Eureka服務啟動 (2)Eureka客戶端註冊服務 (3)Eureka客戶端發現服務 (4)Eureka服務叢集 (5)Eureka服務其他細節 Eureka服務啟動 新建專案eureka-serve

SpringCloud(3)---Eureka服務註冊發現

sta 檢索 消費 能夠 曾經 pri local cloud ava Eureka服務註冊與發現 一、Eureka概述 1、Eureka特點 (1) Eureka是一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。 (2)

springcloud (一) Eureka服務註冊發現

http://blog.didispace.com/springcloud1/   Spring Cloud簡介 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排

SpringCloud-Eureka服務註冊發現(二)

背景: 傳統的服務之間的呼叫是客戶端直接向服務端傳送請求,在單機服務時代,服務並不是很多時,服務之間直接呼叫並不存在很大問題,但隨著微服務架構的興起,服務之間的呼叫越來越頻繁,再像以前一樣服務間直接呼叫,耦合性太大,並不利用維護服務,所以Eureka 應運而生,它將所有服務納入到自己的服務中心

SpringCloud-Eureka服務註冊發現之叢集配置(五)

1.構建多個Eureka服務端,具體步驟參考單機版的Eureka服務端構建步驟 2.修改每個Eureka服務端yml檔案,將對外暴露的註冊介面地址由一個變成多 個,自身的暴露地址除外

SpringCloud-Eureka服務註冊發現之自我保護機制(四)

當我們進行SpringCloud微服務開發的時候,有可能會出現如下的一些紅色提示資訊。這個是Eureka的自我保護機制。 自我保護機制 :預設情況下,如果Eureka Server在一定時間內沒有接收到某個微服務例項的心跳,Eureka S

SpringCloud-Eureka服務註冊發現之開發小技巧(三)

1.如何為服務起別名,即修改下面紅色部分 解決方案:在yml配置檔案中加入以下資訊 測試: 2.如何設定服務端的ip地址 解決方案: 在yml配置檔案中加入以下資訊

SpringCloud(三)Eureka服務註冊發現《2》(actuatorEureka自我保護)

1、actuator與註冊微服務資訊完善 1.1、主機名稱:服務名稱修改 1.當前問題:含有主機名或主機ip。 2.修改microservice-provider-dept-8001yml檔案: eureka:   client:&nbs

springcloud-Eureka-服務註冊發現核心元件

Eureka元件 Eureka是Netfilx開源的服務發現元件,本身是一個基於rest的服務,它包含client和server兩部分。 Spirng Cloud將它整合在子專案Spirng Cloud Netfilx中,從而實現服務的註冊和發現 client註冊到Server什麼? client註

SpringCloud-Eureka服務註冊發現

什麼是Eureka 簡單來說Eureka是一個Netflix公司開源的一款服務發現元件.這個元件提供的服務發現可以為負載均衡等提供支援.Eureka包括了Eureka Server 和 Eureka Client. Eureka Server 提供 REST 服務, Eureka Clien

springCloud Finchley 微服務架構從入門到精通【二】Eureka服務註冊發現

一、開發工具說明 為了防止程式碼執行錯誤,建議使用一致的版本: 開發工具:Eclipse : Version: Neon.3 Release (4.6.3) 開發spring cloud應用推薦使用 idea或者spring官方提供的STS工具,筆者由於

SpringCloud服務元件—Eureka服務註冊發現

前言 本系列文章將簡單的學習SpringCloud微服務相關知識,其實也是因為時間的原因,一直拖到現在,遂打算趁著假期,決定記錄下來。 從天氣預報微服務系統的單體架構——>分散式架構的演變過程中,一步一步,由淺及深的學習SpringCloud微

springcloud — Finchley.RELEASE版》第一篇 服務註冊發現(eureka)

構建高可用Eureka註冊中心 Eureka通過執行多個例項,使其更具有高可用性。 建立一個maven工程micro-erueka-server(micro-parent參見第一篇),pom.xml如下: <?xml version="1.0" encoding=

F版本SpringCloud 3—大白話Eureka服務註冊發現

引用:服務註冊與發現,就像是租房子一樣 前言 今天洛陽下雨了,唉,沒有想到有裹上了羽絨服,不穿冷穿了熱的尷尬溫度。上學工作這麼多年都在外面,家裡竟然沒有一件春天的外套。 日常閒聊之後,開始今天的芝士環節。 昨天說過了什麼是SpringCloud,提到了SpringCloud實際上是很多技術的合集,今天

Spring Cloud 入門教程 - Eureka服務註冊發現

spring spring cloud spring cloud eureka spring boot 簡介 在微服務中,服務註冊與發現對管理各個微服務子系統起著關鍵作用。隨著系統水平擴展的越來越多,系統拆分為微服務的數量也會相應增加,那麽管理和獲取這些微服務的URL就會變得十分棘手,如果我們

eureka服務註冊發現:(一)搭建註冊中心

hostname dubbo efault 必須 技術分享 不存在 dea bsp 啟用 最近由於工作中需要將原來的spring項目都進行架構調整,要實現應用解耦,所以考慮到通過微服務的方式將應用解耦。所以面臨兩個選擇:dubbo 和spring cloud ,由於項目規模