一、前言
本章将讲述基于Spring Cloud的注册中心Eureka的简单工程搭建及Docker部署。
二、环境准备
- 操作系统:CentOS 7.2
- 项目管理:MAVEN(推荐使用阿里源中央仓库:http://maven.aliyun.com/nexus/content/repositories/central/)
- 开发IDE:IDEA
- 所用语言:JAVA
- 所用容器:Docker
三、 Eureka注册中心项目搭建
-
JAVA工程创建(这里使用了IDEA)
-
相关的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.lee</groupId> <artifactId>eureka_server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka_server</name> <description>eureka_server</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.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>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-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> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
-
相关propertities.yml配置文件
server:
port: 8761
eureka:
instance:
hostname: 127.0.0.1
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
enable-self-preservation: false # 设为false,关闭自我保护,生产环境不建议关闭,采用其他方式,后面会讲
eviction-interval-timer-in-ms: 5000 # 清理间隔(单位毫秒,默认是60*1000)
-
启动/查看
【打开浏览器】-->【输入:http://127.0.0.1:8761】
至此,简单的注册中心工程创建完成。
四、Maven打包/Docker容器
-
Maven打包jar(windows环境下)
流程:在CMD窗口下切换至工程根目录 --> 输入Maven打包命令: mvn package -f pom.xml
注:打包过程中会下载Maven打包所使用的插件,首次打包过程会花费一定的时间。
看到上述信息代表打包成功,打包生成的jar包路径如图所示。
-
Docker部署(这里使用Dockerfile打包成Docker容器)
流程:将Maven打包好的jar包文件上传至服务器 --> 编写Dockerfile文件 --> 执行build --> 启动容器
注:有同学会问怎么那么繁琐,本系列为纯手工过程,理解了过程,后面会使用自动化构建进行替代,是一个循序渐进的过程。
我这里上传的路径为:/home/teach/eureka_server/eureka_server-0.0.1-SNAPSHOT.jar
Dockerfile文件与jar包同目录,Dockerfile内容如下:
FROM java:8 MAINTAINER 2299252@qq.com WORKDIR /app ADD eureka_server-0.0.1-SNAPSHOT.jar /app/eureka_server-0.0.1-SNAPSHOT.jarEXPOSE 8761 ENTRYPOINT ["/usr/bin/java","-jar","eureka_server-0.0.1-SNAPSHOT.jar"]
执行Docker build 命令(注意命令最后的【.】)
docker build -t lee/eureka_server:v1 .
启动镜像
docker run --name eureka_server_v1 -d -p 8761:8761 lee/eureka_server:v1
检验 【打开浏览器】-->【输入:http://部署主机地址:8761】
至此,Eureka注册中心的简单工程搭建及Docker部署结束。