Docker安装Apollo

Docker安装Apollo
说明: apollo官网已经说明的很清楚 在这里记录仅为了记录 方便日后回顾

什么是Apollo

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo支持4个维度管理Key-Value格式的配置:

application (应用)
environment (环境)
cluster (集群)
namespace (命名空间)

同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apollo

Apollo的特点

  1. 统一管理不同环境,不同集群的配置
  2. 配置实时更新
  3. 版本发布
  4. 灰度发布
  5. 权限管理

Apollo的核心

  1. application 应用
  2. environment 环境
  3. cluster 集群
  4. namespace 命名空间

Apollo为什么采用Eureka

  1. Eureka是业界比较成熟的工具 并且是开源的 方便排查问题
  2. 由于携程本身主要使用Java的SpringCloud和Boot 所以和Eureka集成更方便

使用Docker安装Apollo

  • 安装Java jdk 1.8

  • 查找dockerhub中mysql镜像

    • docker search mysql
    • Docker安装Apollo
  • 拉取docker的mysql镜像

    • docker pull mysql:5.7
  • 运行mysql镜像

    • docker run -d -p 13306:3306 --privileged=true -v /mnt/mysql/conf/mysql.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /mnt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    • run run 是运行一个容器
      -d  表示后台运行
      -p  表示容器内部端口和服务器端口映射关联
      –privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
      -v /docker/mysql/conf/my.cnf:/etc/my.cnf 将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
      -v /docker/mysql/data:/var/lib/mysql  同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
      -e MYSQL_ROOT_PASSWORD=123456   设置MySQL数据库root用户的密码
      –name mysql     设值容器名称为mysql
      mysql:5.7  表示从docker镜像mysql:5.7中启动一个容器
      –character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码

    • Docker安装Apollo
    • Docker安装Apollo
  • 进入mysql容器

    • docker exec -it 1de812984103 bash
    • 1de812984103 容器id
      exec 在运行的容器中执行命令
      -it 以交互模式执行
      bash 脚本类型

    • Docker安装Apollo
  • 连接mysql

    • mysql -u root -p

    • Docker安装Apollo

    • 在这里我们直接使用连接时指定的密码进行登录即可 后面如果要更改密码 可参考mysql命令文档进行操作

  • 导入apollo系统数据

  • 下载apollo服务镜像

    • dockerhub地址
    • docker pull apolloconfig/apollo-portal:latest
      docker pull apolloconfig/apollo-adminservice:latest
      docker pull apolloconfig/apollo-configservice:latest

    • apollo-adminservice //Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
      apollo-configservice //Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
      apollo-portal //Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试

  • 运行镜像

    • 在这里为了避免和其他服务端口冲突 所以使用8081 8091 8071来对应容器端口

    • Apollo Config Service

      • docker run -p 8081:8080 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://localhost:13306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \ -d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
    • Apollo Admin Service

      • docker run -p 8091:8090 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://localhost:13306/ApolloConfigDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \ -d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice
    • Apollo Portal

      • docker run -p 8071:8070 \ -e SPRING_DATASOURCE_URL="jdbc:mysql://localhost:13306/ApolloPortalDB?characterEncoding=utf8" \ -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 \ -e APOLLO_PORTAL_ENVS=pro \ -e PRO_META=http://localhost:8081 \ -d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal
    • 参数说明

      • SPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址
        SPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名
        SPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码
        APOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置的话,可以通过此环境参数配置
        DEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,需要注意的是如果配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准

  • 运行结果

    • Docker安装Apollo
  • 访问

    • Docker安装Apollo
上一篇:Apollo生产环境部署


下一篇:Apollo-分布式配置中心