首先通过docker命令来手动部署,在本机进行测试,以便熟悉流程。
然后使用maven的docker插件进行配置,以便快速上线。
注:
1.maven插件对docker命令并没有完全支持,可以使用嵌入dockerfile的方式构建镜像。
2.仓库可以使用docker官方仓库或者自行搭建
1.创建Eureka-server集群
1.1 创建工程,并引入eureka-server,入口类
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
1.2修改启动application加注解
@EnableEurekaServer
1.3配置文件
application.yml:
spring:
application:
name: eurekaserverdocker
application-eurekaService1.yml
spring:
profiles: eurekaService1
server:
port: 8888
eureka:
instance:
hostname: eurekaService1 # 指定该Eureka实例的主机名
prefer-ip-address: true
client:
serviceUrl: #多个地址使用 , 分隔。
defaultZone: http://eurekaService2:8887/eureka/,http://eurekaService3:8886/eureka/
application-eurekaService2.yml
spring:
profiles: eurekaService2
server:
port: 8887
eureka:
instance:
hostname: eurekaService2 # 指定该Eureka实例的主机名
prefer-ip-address: true
client:
serviceUrl: #多个地址使用 , 分隔。
defaultZone: http://eurekaService1:8888/eureka/,http://eurekaService3:8886/eureka/
application-eurekaService3.yml
spring:
profiles: eurekaService3
server:
port: 8886
eureka:
instance:
hostname: eurekaService3 # 指定该Eureka实例的主机名
prefer-ip-address: true
client:
serviceUrl: #多个地址使用 , 分隔。
defaultZone: http://eurekaService1:8888/eureka/,http://eurekaService2:8887/eureka/
2.使用docker手动部署(后续会加入使用Maven插件方式部署)
2.1 创建文件夹,加入工程的jar包,以及Dockerfile:
FROM openjdk:8u131-jdk-alpine
MAINTAINER gaojingyuan
#将指定的jar文件复制到容器中
COPY eurekaserverdocker-0.0.1-SNAPSHOT.jar /usr/local/
#执行jar文件
ENTRYPOINT ["java" ,"-jar","/usr/local/eurekaserverdocker-0.0.1-SNAPSHOT.jar"]
注:这里也可以配置为centos,通过配置安装java
FROM centos
MAINTAINER gaojingyuan
#安装应用执行的环境java
RUN yum -y install java
#将指定的jar文件复制到容器中
COPY eurekaserverdocker-0.0.1-SNAPSHOT.jar /usr/local/
#执行jar文件
ENTRYPOINT ["java" ,"-jar","/usr/local/eurekaserverdocker-0.0.1-SNAPSHOT.jar"]
但是通过对比可以看出占用空间相差较多
REPOSITORY TAG IMAGE ID CREATED SIZE
gaojingyuan/eurekacluster latest b126393b43e1 10 seconds ago 146MB
gaojingyuan/eurekaserver latest 30d0a7cc0d47 2 weeks ago 483MB
2.2 构建image
docker build -t gaojingyuan/eurekacluster .
2.3 定义 docker-compose.yml
version: "3"
services:
eurekaService1: # 默认情况下,其他服务可以使用服务名称连接到该服务。因此,对于peer2的节点,它需要连接http://peer1:8761/eureka/,因此需要配置该服务的名称是peer1。
image: gaojingyuan/eurekacluster
networks:
- eureka-net
ports:
- "8888:8888"
environment:
- spring.profiles.active=eurekaService1
eurekaService2:
image: gaojingyuan/eurekacluster
networks:
- eureka-net
ports:
- "8887:8887"
environment:
- spring.profiles.active=eurekaService2
eurekaService3:
image: gaojingyuan/eurekacluster
networks:
- eureka-net
ports:
- "8886:8886"
environment:
- spring.profiles.active=eurekaService3
networks:
eureka-net:
driver: overlay
2.4初始化蜂群并启动服务
docker swarm init
docker stack deploy -c docker-compose.yml eurekacluster
浏览器查看http://localhost:8888/ http://localhost:8887/ http://localhost:8886/
可以看到配置成功
2.5 查看及删除服务
docker service ls
docker stack rm eurekacluster