docker 运行 springCloud项目

本文转载自:https://blog.csdn.net/qwssd/article/details/79259786

一. 准备工作

      关于Docker的内容与入门命令实现已经在其他文章里详细介绍了,这里就不再多说。本篇文章主要详细讲解如何使用Docker部署Spring Cloud项目。

      本文采用的工程来自前面文章的工程eureka-server和eureka-client,我们将采用maven的方式去构建项目,并采用docker-maven-plugin去构建docker镜像。

 

二. 具体实现

      首先改造eureka-server工程,在pom.xml上加上插件:

 

 
  1. org.springframework.boot

  2. spring-boot-maven-plugin

  3. com.spotify

  4. docker-maven-plugin

  5. 1.0.0

  6. ${docker.image.prefix}/${project.artifactId}

  7. java

  8. ["java", "-jar", "/${project.build.finalName}.jar"]

  9. /

  10. ${project.build.directory}

  11. ${project.build.finalName}.jar


 

 

 

 

      简单说明一下插件的配置:

      · imageName指定了镜像的名称,“/”前面是仓库名称,后面是镜像名称,也可以再加上标签名称;

      · resources是指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。resources.resource.directory用于指定需要复制的根目录,${project.build.directory}表示target目录,resources.resource.include用于指定需要复制的文件,${project.build.finalName}.jar指的是打包后的jar包文件。

      然后修改application.properties配置文件:

 
  1. server.port=8761

  2.  
  3. eureka.instance.prefer-ip-address=true

  4. # 代表不向注册中心注册自己

  5. eureka.client.register-with-eureka=false

  6. # 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以设置为false

  7. eureka.client.fetch-registry=false


      最后使用maven命令构建镜像:

 

mvn clean package docker:build

      这样运行后eureka-server镜像就构建完成。

      eureka-client镜像的构建也类似。pom.xml的一样加上插件配置,Dockerfile文件的编写也类似,然后修改application.properties配置文件:

 

 
  1. spring.application.name=hello-service

  2. # host改为镜像名

  3. eureka.client.serviceUrl.defaultZone=http://eureka-server:8761/eureka

  4. server.port=8763

  5. eureka.instance.prefer-ip-address=true

  6. eureka.instance.instance-id=${spring.application.name}:${random.int}

 

      注意上面的host要改为eureka-server镜像名。

      最后同样使用maven构建镜像:

mvn clean package docker:build


      到这里eureka-server和eureka-client镜像已经都构建好了,接着使用命令行启动镜像:

 
  1. # 启动服务器

  2. docker run --name eureka-server -p 8761:8761 -t dan/eureka-server

  3. # 注册服务

  4. docker run --link eureka-server:8761 -p 8763:8763 -t dan/eureka-client

 

      运行起来后就能看到之前一样的内容了。

 

三. 使用docker-compose启动镜像

 

   安装 :docker-compose 请自行百度,很简单,一句命令即可了!

      我们从上面实现知道,可以使用Dockerfile(或Maven)构建镜像,然后使用docker命令操作容器,例如docker run、docker stop等。然而,使用微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例。如果每个微服务都要手动启停,那么效率之低、维护量之大可想而知。这时就需要使用Docker Compose了。

      Docker Compose 是一个用于定义和运行多容器的Docker应用的工具。使用Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。

 

      接下来我们来使用docker-compose编排启动我们之前第九篇文章中的微服务工程。

      微服务列表如下:

      · eureka-server

      · eureka-client

      · service-ribbon

      · service-feign

      · service-zuul

 

3.1 构建镜像

      首先按照上面的方法为每个工程构建镜像,分别修改pom.xml、application.properties和Dockerfile。

 

3.2 使用docker-compose编排并启动镜像

      创建docker-compose.yml,编写内容:

version: '3'
services:
  eureka-server:
    image: dan/eureka-server
    ports:
      - "8761:8761"
 
  hello-service:
    image: dan/eureka-client
    ports:
      - 8763
    links:
      - eureka-server
 
  service-ribbon:
    image: dan/service-ribbon
    ports:
      - "8764:8764"
    links:
      - eureka-server 
 
  service-feign:
    image: dan/service-feign
    ports:
      - "8765:8765"
    links:
      - eureka-server
 
  service-zuul:
    image: dan/service-zuul
    ports:
      - "8769:8769"
    links:
      - eureka-server 


      最后执行命令启动镜像:

 

docker-compose up


      使用浏览器访问http://localhost:8761/看到,所有服务都注册了:

docker 运行 springCloud项目_第1张图片

      如果要增加或减少docker实例,直接使用docker-compose scale hello-service=3修改实例数;停止运行则使用docker-compose stop即可。

 

     源码下载:https://github.com/gitlyb2080/springCloudLearing/tree/master/chapter12

你可能感兴趣的:(分布式架构-容器化时代,springCloud系列)