Docker部署Apollo配置中心

apollo-configservice

apollo-adminsrevice

apollo-portal

因为本文为纯部署目的,因此不在这里讲解Apollo的一些知识,如有需要可查看官方GitHub地址(https://github.com/ctripcorp/apollo)。

上面提到的镜像除了Mysql以外其余三个都需要自行编译成Docker镜像,由于最初是打算部署到k8s中的,所以是按照K8s的部署文档来编译相应的镜像的。本文使用使用dockre-compose部署dev、fat、uat、pro等环境,仅供测试时使用,详细生产环境部署可查看官方指导,这里先给出官方的分布式部署方案图。

分布式部署指南

关于如何编译apollo-configservice、apollo-adminsrevice、apollo-portal这三个docker镜像可点击连接查看 K8s的部署文档 来编译Docker镜像。

Apollo使用的是Spring Cloud微服务架构,主要包括以下服务:

注册中心(与apollo-configservice运行在一起)

配置服务(apollo-configservice)

管理服务(apollo-adminservice)

管理门户(apollo-portal)

Apollo主要使用Mysql存储应用的配置以及自已的运行配置,Apollo使用以下数据库完成存储:

ApolloPortalDB

ApolloConfigDB

使用关系如下:

服务 ApolloPortalDB ApolloConfigDB
配置服务     Y  
管理服务     Y  
管理门户   Y    

下面准备使用Dockere在dev环境部署Apollo。

准备工作

从Github来拉取最新的Apollo代码:

git clone git@github.com:ctripcorp/apollo.git

检查启动Docker是否启动:

docker info

由于使用dockre-compose部署,需要有一个dockre-compose配置文件,这里假设有一个apollo-compose.yaml配置文件,之后的部署都会更新这个文件。如果你的机器还未安装dockre-compose可查看 docker-compose安装指导

配置Mysql服务

部署之前先将对应环境的Mysql服务启动起来,这里使用docker-compose启动Mysql服务.

version: "3" services: mysql-dev: image: mysql # restart: always environment: - MYSQL_ROOT_PASSWORD=123456 expose: - "3306" volumes: - /Users/yjwfn/bin/apollo/scripts/sql:/sql

上面的配置代码,将在dev环境运行mysql服务,这里挂载了一个目录:/Users/yjwfn/bin/apollo/scripts/sql:/sql,该目录里面存放Apollo的数据库文件,详细文件可查看 Apollo Sql文件。

使用以下命令启动dev环境的mysql服务:

docker-compose -f apollo-compose.yaml up -d mysql-dev

apollo-compose.yaml是你机上docker-compose配置文件,mysql-dev是mysql服务的名称。

启动完成后查看容器是否已经运行:

docker container ps 配置Apollo数据库

mysql服务启动完成之后,需要将apolloconfigdb.sql与apolloportaldb.sql这两个sql文件导入到数据库中,首先连接上docker中的mysql服务:

docker exec -it kube_mysql-dev_1 sh

kube_mysql-dev_1是mysql服务的容器名称,连接上容器后登陆到mysql服务导入sql文件:

mysql -p123456 source /sql/apolloconfigdb.sql srouce /sql/apolloportaldb.sql

如果是部署apollo-configservice与apollo-apolloportaldb的话只需要导入/sql/apolloconfigdb.sql就行了,相应的部署apollo-portal只需要导入/sql/apolloportaldb.sql,方便演示这里就两个同时导入了。

导入完成后数据中现在应该有ApolloConfigDB与ApolloPortalDB两个数据库,首先需要对ApolloConfigDB里面的ServerConfig做一些修改,主要是对发服服务的服务器地址做一点变更:

use ApolloConfigDB; update ServerConfig set Value="http://apollo-configservice-dev:8080/eureka/" where `key`="eureka.service.url";

apollo-configservice-dev是稍后我们需要发布的apollo-configservice服务的名称。修改完成之后可运行查询语句是否修改成功:

select * from ServerConfig;

修改完成之前退出dockre容器的连接就行了, 接下来部署apollo-configservice。

配置服务部署(apollo-configservice)

Apollo配置服务(apollo-configservice)与注册中心(Eureka)是运行在一起的,所以一般情况下是不需要再部署Eureka了。现在部署apollo-configservice服务,首先在apollo-compose.yaml添加apollo-configservice服务:

version: "3" services: ... #省略其他服务 apollo-configservice-dev: image: <镜像地址> environment: DATASOURCES_URL: jdbc:mysql://mysql-dev:3306/ApolloConfigDB?characterEncoding=utf8 DATASOURCES_USERNAME: root DATASOURCES_PASSWORD: 123456 ENV: "dev" expose: - "8080" depends_on: - "mysql-dev"

注意apollo-configservice-dev依赖了上面部署的mysql-dev服务,并且注入了一些环境变量:

DATASOURCES_URL (mysql-dev连接地址)

DATASOURCES_USERNAME (mysql-dev连接用户)

DATASOURCES_PASSWORD (mysql-dev的root密码)

ENV (apollo-configservice)的运行环境

服务添加完成后执行以下命令启动apollo-configservice-dev服务:

docker-compose -f apollo-compose.yaml up -d apollo-configservice-dev

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzwjz.html