Apollo配置中心Docker部署

Apollo开源地址:

https://github.com/ctripcorp/apollo

一、介绍

Apollo 最主要有三个工程,会用这三个工程进行部署

Portal:是管理界面,对应有一个PortalDB数据库,Portal是用来管理有几个环境的,不管对接了几个环境,Portal和PortalDB数据库只需要部署一份
Config,Admin:每个环境都有一个Config和Admin,对应每个环境都有一个自己的ConfigDB库,如果用于生产,Config和Admin至少部署两套,才能保证服务的高可用
 

二、部署

第一步

将项目clone到本地,git clone https://github.com/ctripcorp/apollo.git

第二步

打开clone到本地的项目,目录结构如下

第三步

在此目录下创建apollo-compose.yml文件,写入内容:

version: "3"
 
services:
  apollo-configservice:                                         ##容器服务名
    container_name: wujun.apollo-configservice                        ##容器名
    build: apollo-configservice/src/main/docker/                ##Dockerfile路径
    image: wujun/apollo-configservice                         ##镜像名
    ports:
      - "8080:8080"    
    volumes:
      - "/opt/logs/100003171"    ##将/opt/logs/100003171目录挂载到宿主机的/opt/logs/100003171方便在宿主机上查看日志
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - eureka_instance_ip_address=192.168.92.131  ##解决Eureka注册ip错误问题, 默认向eureka注册的是镜像自身ip
  apollo-adminservice:
    container_name: wujun.apollo-adminservice
    build: apollo-adminservice/src/main/docker/
    image: wujun/apollo-adminservice
    ports:
      - "8090:8090"
    depends_on:
      - apollo-configservice
    volumes:
      - "/opt/logs/100003172"
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - eureka_instance_ip-address=192.168.92.131 ##解决Eureka注册ip错误问题, 默认向eureka注册的是镜像自身ip
  apollo-portal:
    container_name: wujun.apollo-portal
    build: apollo-portal/src/main/docker/
    image: wujun/apollo-portal
    ports:
      - "8070:8070"
    depends_on:
      - apollo-adminservice
    volumes:
      - "/opt/logs/100003173"
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloPortalDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - apollo_portal_envs=dev                         ##指定apollo dev环境,多个环境以逗号分隔
      - dev_meta=http://192.168.92.131:8080  ##dev环境meta-server地址,即eureka地址

 

注意:

记得修改mysql的连接地址

讲一下,这里可能有人会问为什么不用apollo项目中提供的quickstart-docker脚本,因为:

在quickstart-docker中,apollo开源项目组为了减少部署操作,内置了mysql等一系列配置,我们在使用的时候肯定不会使用内置的东西,我们希望将数据存在我们自己的mysql数据库中。还有就是quickstart-docker是为了我们方便演示使用的。

第四步

先修改apollo-configservice、apollo-adminservice中bootstrap.yml文件,往里添加:

eureka.instance.ip-address:${eureka.instance.ip-address:192.168.92.131}

然后执行scripts脚本目录下build.sh,打包完成。

第五步

登录mysql,导入下面文件夹中sql文件,进行数据库初始化;

5.1 新建mysql-compose.yml:

version: "3"
services:

    mysql-5.7:
         image: "mysql:5.7"
         container_name: mysql5.7
         restart: always
         environment:
              MYSQL_ROOT_PASSWORD: "root"
              MYSQL_USER: 'test'
              MYSQL_PASS: 'test'
         volumes:
           - "/apollo文件路径/apollo/scripts/sql:/sql"
         ports:
           - "3306:3306"

执行:docker-compose -f mysql-compose.yml up -d mysql-5.7

5.2 进入mysql容器内部,执行初始化sql脚本

>docker exec -it mysql5.7 bash

>cd /sql

>mysql -uroot -proot

>source apolloconfigdb.sql

>source apolloportaldb.sql

注意: admin的eureka连接需要在ApolloPortalDB数据库的ServerConfig表中配置。配置eureka.service.url的value为部署的configservice docker的访问url!,这里就是:http://192.168.92.131:8080/eureka/

第六步

在apollo项目路径下,执行:docker-compose -f apollo-compose.yml up -d 

然后看到命令输出

就表示这三个docker容器已创建成功

使用 docker ps 查看docker 服务

 

第七步:

启动成功后访问:http://192.168.92.131:8070/

默认账号是apollo

默认密码admin

登录成功后打开系统信息页,可以看到这里有个Home Page Url,已经是服务的具体地址,而不是Docker容器中默认IP地址,已经可以提供项目集成访问。

官方的解决方案

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值