Docker如何使用Apollo

引言

Apollo是一个高效的分布式配置中心,可以帮助我们进行统一的配置管理。它支持多种配置管理方式,并且与Spring、Spring Boot等框架高度集成。将Apollo部署在Docker中,可以简化部署过程,使得其在不同环境中的使用更加便捷。本文将详细介绍如何在Docker中使用Apollo,并提供完整的代码示例。

Apollo概述

Apollo的整体架构包括以下几个组件:

  • Admin Service:负责管理配置和发布。
  • Config Service:负责提供配置给客户端。
  • Portal:提供用户界面,便于管理配置。

Docker环境准备

在开始之前,您需要确保Docker已经安装并正常工作。您可以用以下命令确认您的Docker版本:

docker --version

Docker Compose配置

我们将使用Docker Compose来简化Apollo的部署步骤。首先,您需要创建一个docker-compose.yml文件,内容如下:

version: '3.7'

services:
  apollo-configdb:
    image: apollo-config:latest
    container_name: apollo-configdb
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=apollo
    ports:
      - "3306:3306"
  
  apollo-adminservice:
    image: apollo-adminservice:latest
    container_name: apollo-adminservice
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://apollo-configdb:3306/apollo
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    ports:
      - "8080:8080"
    depends_on:
      - apollo-configdb

  apollo-configservice:
    image: apollo-configservice:latest
    container_name: apollo-configservice
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://apollo-configdb:3306/apollo
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root
    ports:
      - "8081:8080"
    depends_on:
      - apollo-configdb

  apollo-portal:
    image: apollo-portal:latest
    container_name: apollo-portal
    environment:
      - Apollo_Env=DEV
      - Apollo_Cluster=default
    ports:
      - "8070:8070"
    depends_on:
      - apollo-adminservice

此配置文件定义了Apollo使用的四个Docker服务,包括数据库服务和三个Apollo组件。请确保相应的Docker镜像存在,或者根据Apollo的官方Docker文档构建自己的镜像。

启动Docker服务

在终端中,切换到包含docker-compose.yml的目录,并运行以下命令启动所有服务:

docker-compose up -d

-d选项表示在后台运行。如果一切顺利,您可以使用以下命令查看正在运行的容器:

docker ps

配置Apollo

在启动服务后,您可以通过访问http://localhost:8070来访问Apollo的Portal界面。创建一个新的App,并配置相关内容。在此界面中,您可以查看和修改配置信息。

配置示例

接下来,在创建的应用中,您可以添加配置项,例如:

  • Key: db.username
  • Value: admin

客户端配置

在您的Spring Boot项目中,您可以通过以下方式配置Apollo:

spring:
  application:
    name: your-app-name
  cloud:
    config:
      uri: http://localhost:8081

此外,您还需要在pom.xml中加入Apollo的依赖:

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.8.0</version>
</dependency>

类图

在Apollo中,主要的类之间的关系可以用以下类图表示:

classDiagram
    class ApolloClient {
        +String appId
        +String env
        +String cluster
        +getConfig()
    }
    class ConfigService {
        +getConfig(appId, env)
    }
    
    ApolloClient --> ConfigService : uses

旅程图

最后,Apollo的使用过程可以用以下旅程图表示:

journey
    title 使用Apollo配置中心
    section 启动服务
      启动Docker: 5: 客户端
      拉取Docker镜像: 4: 微服务
    section 创建配置
      登录Portal: 3: 用户
      创建应用: 4: 用户
      添加配置项: 4: 用户
    section 客户端读取配置
      客户端请求配置: 5: 客户端
      提供配置: 5: ConfigService

结论

通过Docker部署Apollo,您可以简化配置管理的过程,使得在开发、测试和生产环境中都能够快速交付和使用。本文提供了详细的步骤和示例,帮助您在Docker环境中顺利运行Apollo配置中心。希望能对您在微服务架构中的配置管理提供帮助!