<番外篇>docker 、docker-compose环境部署eureka集群
文章目录
1、关于eureka的搭建
详细参考《<一>spring-cloud Hoxton.SR2版 服务注册与发现–eureka搭建以及集群搭建》
这次构建的springboot配置文件如下
server:
port: 8761
spring:
application:
name: badger-spring-cloud-eureka
eureka:
server:
enable-self-preservation: true #关闭自我保护模式(缺省为打开)生产环境需要打开
eviction-interval-timer-in-ms: 60000 # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
client:
register-with-eureka: true #设置是否将自己作为客户端注册到注册中心(缺省true,单节点设置成false,集群需要互相同步)
fetch-registry: true # 设置是否从注册中心获取注册信息(缺省true,单节点设置成false,集群需要互相同步)
serviceUrl:
defaultZone: http://172.16.2.54:8761/eureka/,http://172.16.2.54:8762/eureka/,http://172.16.2.54:8763/eureka/ #注册的地址
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port} #注册中心显示的名称IP:端口 默认 机器主机名:应用名称:应用端口
prefer-ip-address: true #设置微服务调用地址为IP优先(缺省为false)
2、Dockerfile文件如下;
DockerFile语法,详细参考《dockerFile演示以及语法详解》
FROM openjdk:8-jre
RUN mkdir /app
COPY badger-spring-cloud-eureka-0.0.1-SNAPSHOT.jar /app/
CMD java -jar /app/badger-spring-cloud-eureka-0.0.1-SNAPSHOT.jar
EXPOSE 8761
我的当前上下文路径下,执行构建命令
docker build -t eureka .
3、创建eureka镜像的实例
根据上面的springboot的配置文件,我的eureka的使用的是8761的端口,我的本机ip是172.16.2.54,我的三个eureka的实例的映射物理机的端口分别是8761,8762,8763。
我这边,直接run三个实例,端口分别做映射就可以了
docker run -p 8761:8761 --name eureka_01 -d eureka
docker run -p 8762:8761 --name eureka_02 -d eureka
docker run -p 8763:8761 --name eureka_03 -d eureka
http://localhost:8761/ 查看eureka的启动情况,如图所示,启动完成
4、使用docker-compose部署eureka集群
上述使用传统的docker部署的eureka集群,下面使用docker-compose部署;
关于docker-compose的使用,详细参考《Docker Compose 简介、命令语法和使用演示》
创建docker-compose.yml的文件,写入内容如下
version: '3'
services:
badger-eureka-1:
restart: always
build: .
container_name: badger-eureka-1
ports:
- 8761:8761
badger-eureka-2:
restart: always
build: .
container_name: badger-eureka-2
ports:
- 8762:8761
badger-eureka-3:
restart: always
build: .
container_name: badger-eureka-3
ports:
- 8763:8761
在有docker-compose.yml文件的目录下,使用命令构建
docker-compose up -d
注意:docker-compose.yml
和Dockerfile
以及badger-eureka-0.0.1-SNAPSHOT.jar
,在同一个目录下
可以看到,镜像有三个,镜像的ID,却是一样的,这个其实表示,只构建了一个镜像,这个镜像有三个名字,docker其实是一个分层技术。
卸载
docker-compose down