zoukankan      html  css  js  c++  java
  • 微服务SpringCloud容器化案例

    前言

    当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署。因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变得很麻烦,而容器化是微服务的部署一把利剑。

    PS:本文不介绍具体docker使用的各种基础,以及微服务的各种基础,就是给出相应的案例,你可以根据这样的案例快速学会如何将你的微服务容器化。

    实际案例

    让我们先来看看,实现之后如果本地要进行测试,是多么方便。

    只需要一个命令,就能将我们的服务都启动起来,包括注册中心,网关,服务都启动了,你不需要三四台服务器,也不需要安装配置各种复杂的环境。
    当我们要停止所有服务的时候呢?

    实际案例:https://github.com/LinkinStars/MicroServiceExample/tree/dockerization

    微服务容器化的步骤

    1. 编写Dockerfile构建单个镜像
    2. 编写docker-compose.yml进行容器编排
    3. 修改各个应用中的application.yml的一些访问地址

    容器化相关命令

    单独部署:

    进入某个应用的目录(目录下有Dockerfile)

    使用命令:docker build -t mic-eureka .

    整体编排部署:

    进入根目录(目录下有docker-compose.yml)

    使用命令:docker-compose up -d

    容器化说明

    在所有module每个目录下面都存在一个Dockerfile,类似如下:

    # 基础镜像
    FROM java:openjdk-8u111
    
    # 作者
    MAINTAINER LinkinStar linkinstar@foxmail.com
    
    # 将build/libs下的jar包拷贝到容器中的根目录,并命名为app.jar
    COPY build/libs/*.jar /app.jar
    
    # 声明开放端口
    EXPOSE 8761
    
    # 启动应用
    ENTRYPOINT ["java", "-jar", "app.jar"]

    容器编排:

    在根目录下有docker-compose.yml文件,用于进行容器编排:

    # 声明版本
    version: '3'
    
    # 声明各个服务services
    services:
      # 服务名称
      mic-eureka:
        # 构建当前服务的Dockerfile位置
        build:
          context: eureka
        # 镜像名称
        image: mic-eureka:latest
        # 映射的开放端口
        ports:
          - 8761:8761
      
      mic-gateway:
        build:
          context: gateway
        image: mic-gateway:latest
        # 需要关联的应用,这些关联的应用可以通过下面的名称来访问,类似域名的概念
        links:
          - mic-eureka
          - mic-pay
          - mic-order
        ports:
          - 8769:8769
          
      mic-pay:
        build:
          context: pay
        image: mic-pay:latest
      
      mic-order:
        build:
          context: order
        image: mic-order:latest
     

    总结

    对于jar包,我们还是需要手动用gradle的bootJar进行打包,其实可以编写相应的shell脚本来完成,这样更加的自动方便一些。 针对实际项目中,还有数据库,redis,mq这些都可以交由容器去进行部署和编排,这里只是抛砖引玉,对于这些的部署和实现就交给你来完成啦。

  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/linkstar/p/9822451.html
Copyright © 2011-2022 走看看