docker 部署 Apollo 配置中心

这个晚上很美好,亲爱的胖胖在旁边看书,只要看到她,就。。。

前言:

        apollo 是携程开发团队出的一种关于分布式系统配置管理的技术,关于它的特性、简介、使用规则等大家可以去 git 上的 apollo 项目查看 https://github.com/ctripcorp/apollo, spring cloud 官方出的配置中心是 spring-cloud-config,但是它存在很多不便之处,比如它本身不支持即时生效,需要我们去配置才可以,还有它需要结合 git  的使用才可以发挥出它的最大作用,所以,就有了携程的 apollo。

        apollo 是一个项目,它包含三个部分,apollo-configservice(配置中心),apollo-adminservice(管理中心),apollo-portal(交互界面)。其中 apollo-portal 依赖 apollo-adminservice ,apollo-adminservice 依赖 apollo-configservice。

        关于 apollo 的部署官方给了很多种方式,像 quick-start、使用官方给的 releases 中的 zip、拉取官方源码,自己进行打包等,这里小生使用的是拉取官方源码,自己在本地对 apollo-configservice、apollo-adminservice、apollo-portal 这三个包进行打包。

 

环境:

        apollo:1.6.0

        CentOS:7(腾讯云)

        mac:10.13

        注:小生在这里部署的是 dev 的 apollo 环境。笔者的数据库是在 199.** 服务器上,项目时部署在 49.*** 上面。

 

正文:

1、数据库:

        首先保证服务器上安装了 mysql,然后在拉取的 apollo 项目中的 scripts/docker-quick-start/spl 下有两个 sql 文件,在 navicat 活 workbench 中执行就可以了,会产生三个数据库,ApolloconfigDB、ApolloPortalDB、ApolloconfigProDB,其实只需要前两个。

2、部署思路

        首先我们项目是部署在服务器上的,并且是使用 docker 的,那肯定得有镜像,然后创建容器,镜像使用的是 apollo-configservice、apollo-adminservice、apollo-portal 这三个基础镜像,然后利用 Dockerfile 文件构建项目的镜像,也就是将项目和镜像绑定在一起(大部分官方都使用这种方式),然后 使用 docker-compose 文件创建容器,也就是传说中的微服务编排。

3、打包三个模块:

        修改 scripts 文件夹下的 build.sh(笔者是在 mac 环境下,如果是 windows,则需要将后缀改为 .bat,好像还需要修改其它地方,大家度娘哈)。

# apollo config db info
# configservice 和 adminservice 使用的数据库
apollo_config_db_url=jdbc:mysql://119.**.***.***:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=******

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://119.**.***.***:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=******

# meta server url, different environments should have different meta server addresses

 # apollo-portal 绑定的服务
dev_meta=http://119.23.234.176:12251
#fat_meta=http://119.23.234.176:12251
#uat_meta=http://119.23.234.176:12251
#pro_meta=http://119.23.234.176:12251

        注:apollo 的 apollo-configservice、apollo-adminservice、apollo-portal 的原本项目端口分别是 8080、8090、8070,笔者在这里给其映射的容器的端口号分别是 12251、12252、12253.

        然后在控制台执行 build.sh 文件,命令为 ./build.sh。执行完后,打的包在各模块下的 target 文件中,然后将 -------.github.zip 包拷贝到 src/main/docker 目录下。 

4、编写 docker-compose 文件:

        在项目根目录下创建 docker-compose.yml 文件,这个文件是创建容器使用的。

version: '3'

services:
  apollo-configservice:
    image: apollo-configservice   #基础镜像名
    container_name: apollo-configservice   #容器名   
    build: apollo-configservice/src/main/docker/   #项目包和 Dockerfile 文件地址
    ports:
      - "12251:8080"   #容器端口号:项目端口号
    volumes:
      - "/root/project/apollo/logs/100003171:/opt/logs/100003171"  #日志,将容器内的日志挂载到主机内,方便查看
    environment:   #数据库连接
      - spring_datasource_url=jdbc:mysql://119.**.***.***:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=******

  apollo-adminservice:
    image: apollo-adminservice
    container_name: apollo-adminservice
    build: apollo-adminservice/src/main/docker/
    ports:
      - "12252:8090"
    depends_on:
      - apollo-configservice
    volumes:
      - "/root/project/apollo/logs/100003172:/opt/logs/100003172"
    environment:
      - spring_datasource_url=jdbc:mysql://119.**.***.***:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=******

  apollo-portal:
    image: apollo-portal
    container_name: apollo-portal
    build: apollo-portal/src/main/docker/
    ports:
      - "12253:8070"
    depends_on:
      - apollo-adminservice
    volumes:
      - "/root/project/apollo/logs/100003173:/opt/logs/100003173"
    environment:
      - spring_datasource_url=jdbc:mysql://119.**.***.***:3306/ApolloPortalDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=******


5、部署:

        将整个 apollo 项目打成 zip 包,上传至服务器,然后在 apollo 文件夹下创建 logs 来记录日志,并在 logs 文件夹内创建 100003171、100003172、100003173 三个文件夹分别对应三个模块的日志。然后进入 apollo-configservice/src/main/docker 目录下,执行 docker build -t apollo-configservice . 来构建镜像,其它两个也是如此。

docker build -t apollo-configservice .    #通过 dockerfile 的方式来构建镜像

         然后进入 apollo 目录下,执行 docker-compose up -d 命令来创建容器(前提是得安装 docker-compose ,具体小伙伴自行度娘),然后通过 docker ps  查看

docker-compose up -d   # 通过微服务编排的方式来创建容器

       然后修改数据库数据,因为 apollo-configservice 和 apollo-adminservice 这两个服务是注册在apollo-configservice 中的,所以我们需要修改这两个服务的注册地址,将 ApolloConfigDB 数据库中的 ServerConfig 表中的 eureka.service.url 后面的 value 值修改为 http://49.***.***.**:12251/eureka/ 。  

        打开浏览器访问 http://49.***.***.***:12253,就会看到下面的页面

      小伙伴们可以创建一个项目试一下,创建成功后点击项目查看下,这时候你就会发现系统报错了。好,正在按照预期的请走发展,这时候查看 apollo-configservice 服务日志,也就是 apollo/logs/100003171,你就会发现,项目启动报错了,不急,逐一对 apollo-configservice 和 apollo-adminserivce 两个服务进行重启,期间一直查看日志,直到启动成功,然后再在上面的页面创建项目,然后查看项目,发现一切正常了,大家可以试着发布一个配置试一下,像下面这样。

 

        至此,apollo 配置中心就部署完了!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值