首先通過docker命令來手動(dòng)部署不恭,在本機(jī)進(jìn)行測(cè)試柄沮,以便熟悉流程。
然后使用maven的docker插件進(jìn)行配置盟广,以便快速上線闷串。
注:
1.maven插件對(duì)docker命令并沒有完全支持,可以使用嵌入dockerfile的方式構(gòu)建鏡像筋量。
2.倉庫可以使用docker官方倉庫或者自行搭建
1.創(chuàng)建Eureka-server集群
1.1 創(chuàng)建工程烹吵,并引入eureka-server,入口類
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.2修改啟動(dòng)application加注解
@EnableEurekaServer
1.3配置文件
application.yml:
spring:
application:
name: eurekaserverdocker
application-eurekaService1.yml
spring:
profiles: eurekaService1
server:
port: 8888
eureka:
instance:
hostname: eurekaService1 # 指定該Eureka實(shí)例的主機(jī)名
prefer-ip-address: true
client:
serviceUrl: #多個(gè)地址使用 , 分隔。
defaultZone: http://eurekaService2:8887/eureka/,http://eurekaService3:8886/eureka/
application-eurekaService2.yml
spring:
profiles: eurekaService2
server:
port: 8887
eureka:
instance:
hostname: eurekaService2 # 指定該Eureka實(shí)例的主機(jī)名
prefer-ip-address: true
client:
serviceUrl: #多個(gè)地址使用 , 分隔桨武。
defaultZone: http://eurekaService1:8888/eureka/,http://eurekaService3:8886/eureka/
application-eurekaService3.yml
spring:
profiles: eurekaService3
server:
port: 8886
eureka:
instance:
hostname: eurekaService3 # 指定該Eureka實(shí)例的主機(jī)名
prefer-ip-address: true
client:
serviceUrl: #多個(gè)地址使用 , 分隔肋拔。
defaultZone: http://eurekaService1:8888/eureka/,http://eurekaService2:8887/eureka/
2.使用docker手動(dòng)部署(后續(xù)會(huì)加入使用Maven插件方式部署)
2.1 創(chuàng)建文件夾,加入工程的jar包,以及Dockerfile:
FROM openjdk:8u131-jdk-alpine
MAINTAINER gaojingyuan
#將指定的jar文件復(fù)制到容器中
COPY eurekaserverdocker-0.0.1-SNAPSHOT.jar /usr/local/
#執(zhí)行jar文件
ENTRYPOINT ["java" ,"-jar","/usr/local/eurekaserverdocker-0.0.1-SNAPSHOT.jar"]
注:這里也可以配置為centos呀酸,通過配置安裝java
FROM centos
MAINTAINER gaojingyuan
#安裝應(yīng)用執(zhí)行的環(huán)境java
RUN yum -y install java
#將指定的jar文件復(fù)制到容器中
COPY eurekaserverdocker-0.0.1-SNAPSHOT.jar /usr/local/
#執(zhí)行jar文件
ENTRYPOINT ["java" ,"-jar","/usr/local/eurekaserverdocker-0.0.1-SNAPSHOT.jar"]
但是通過對(duì)比可以看出占用空間相差較多
REPOSITORY TAG IMAGE ID CREATED SIZE
gaojingyuan/eurekacluster latest b126393b43e1 10 seconds ago 146MB
gaojingyuan/eurekaserver latest 30d0a7cc0d47 2 weeks ago 483MB
2.2 構(gòu)建image
docker build -t gaojingyuan/eurekacluster .
2.3 定義 docker-compose.yml
version: "3"
services:
eurekaService1: # 默認(rèn)情況下凉蜂,其他服務(wù)可以使用服務(wù)名稱連接到該服務(wù)。因此性誉,對(duì)于peer2的節(jié)點(diǎn)窿吩,它需要連接http://peer1:8761/eureka/,因此需要配置該服務(wù)的名稱是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初始化蜂群并啟動(dòng)服務(wù)
docker swarm init
docker stack deploy -c docker-compose.yml eurekacluster
瀏覽器查看http://localhost:8888/ http://localhost:8887/ http://localhost:8886/
可以看到配置成功
2.5 查看及刪除服務(wù)
docker service ls
docker stack rm eurekacluster