• 微服务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这些都可以交由容器去进行部署和编排,这里只是抛砖引玉,对于这些的部署和实现就交给你来完成啦。

  • 相关阅读:
    React页面插入script
    Node Sass does not yet support your current environment解决办法
    ReactNative项目结构目录详解
    Android Studio模拟器磁盘空间不足(Not enough disk space to run AVD)
    React Native在window下的环境搭建(二):创建新项目
    React Native在window下的环境搭建(一)
    转:解决AndroidStudio连不上Android设备真机的问题
    ios中设置input为readonly后,解决弹起软键盘的问题
    转: rem与px的转换
    Python中模块之collections系列
  • 原文地址:https://www.cnblogs.com/linkstar/p/9822451.html
Copyright © 2020-2023  润新知