apollo官方网址:https://github.com/ctripcorp/apollo
先仔细阅读官方的apollo介绍,大致了解apollo的架构及功能。我在部署这个项目之前对docker及rancher基本不了解,所以是边学习边部署,所以这是一个适合新手阅读的文章,如果发现文章中的问题,欢迎留言。本文会先介绍在虚拟机上使用docker部署apollo,然后再介绍部署到rancher。
一、在虚拟机上使用docker部署
1.将apollo项目下载到本地

apollo的架构图主要的三部分:(引用官方文档)
(1)Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
(2)Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
(3)Apollo Portal 提供界面

2.查看作者提供好的dockerfile(以apollo-configservice为例)

apollo-configservice的dockerfile
我是docker的初学者,所以在dockerfile中加了些自己的理解。三个dockerfile大同小异,不再赘述其他两个。

3.在在官网上获得作者打包好的压缩包,注意版本,1.1.2的版本在使用时可能会有url解析异常的错误(两个//的问题),所以在部署时要使用1.2.0版本,也可以自己在本地打包的,(自己在本地打包请按照下面一步配置好数据库及meta信息后执行build.sh进行打包,官网也有详细描述)https://github.com/ctripcorp/apollo/releases
在这里插入图片描述
4.创建数据库,作者已经写好的sql语句直接执行即可
文件位置
我在docker部署的时候直接将数据库放在了我的windows主机上,这样就要保证mysql的root可以被远程访问(可以百度,很简单),也可以安装在虚拟机上(我觉得安装很麻烦),后期将镜像放在rancher的时候可以使用docker官方的mysql镜像,所以在docker部署的时候没有很注重mysql。

5.对安装包的内容进行修改(主要是数据库地址,meta-service地址)
[1](apollo-configservice压缩包打开)在config->application-github.properties文件中。修改为你的ip,用户名及密码

apollo支持四个环境的配置,想要多环境部署的,apolloconfigdb在每个环境都要有一套(在每个环境做的配置要分别保存)在rancher上很简单多起几个mysql容器即可。在本地的话可以修改下数据库的名字(表保持不动),一定保证每个环境对应的apolloconfigdb不同
比如上图为dev环境的apollo-configservice的apolloconfigdbdb ,下图为其他环境的db【fat环境】

[2](apollo-adminservice压缩包打开)在config->application-github.properties文件中,修改为你的ip,用户名及密码

apollo-adminservice中也是ApolloConfigDB所以在多环境部署时记得更换数据库的连接地址
[3] (apollo-portal压缩包打开)两处需要修改
在config->application-github.properties文件中,修改为自己的ip及用户名密码

在config->apollo-env.properties文件中,meta-service配置

apollo-configservice,apollo-adminservice,apollo-portal是三个服务,Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳,Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试。作者将apollo-configservice和Eureka放在一起,所以portal需要知道每个环境的Eureka地址也就是apollo-configservice的地址如上图
。设计好端口后,在容器启动时就要用-p指定(后面会讲)

6.现在安装包和dockerfile都准备好了,开始在虚拟机上打镜像(安装好docker)
在usr目录下创建一个apollo目录

(1)先打apollo-configservice镜像
在apollo目录项创建config目录

将apollo-configservice的压缩包以及dockerfile放在config目录下
创建镜像
docker build是创建镜像的语句,-t 相当于给镜像起名字 config/csdn就是这个镜像的名字 .是标识dockerfile就在当前目录
出现这样的日志证明build镜像成功
使用docker image ls 可以查看所有的镜像
在这里插入图片描述
【注意】
如果出现这样的问题,说明没有找到源文件。仔细查看下源文件在不在。注意文件名。我出现这个问题就是因为我的dockerfile中使用的压缩包是1.2.0版本的,但是我的压缩包是1.1.2版本的所以找不到
(2)打apollo-adminservice镜像
在apollo目录下创建admin目录,并且把apollo-adminservice的压缩包和dockerfile放在admin目录下
在这里插入图片描述
build镜像
在这里插入图片描述
(3)打portal镜像
在apollo目录下创建portal,把压缩包和dockerfile正确放置
build镜像
在这里插入图片描述
7.使用容器启动这三个服务。注意一点
apolloconfig
apolloconfigdb中的serverconfig表的eureka.service.url字段是apollo-configservi ce,apollo-adminservice注册的地址,这个地址作者已经设置为何apollo-configservice的地址,也就是说虚拟机对应的启动apollo-configservice容器的地址,我们使用32782,作为dev环境apollo-configservice的地址(和portal中配置保持一致)
(1)用容器启动apollo-configservice
在这里插入图片描述
docker run 是启动容器的命令 、
-d:后台运行(不使用-d则是前台启动,那关闭页面的时候容器就停止,而且启动一个容器后这个页面就不能使用了)
-pport1:port2 port1是宿主机会开启的端口,port2是这个容器会打开的端口
–name为容器指定名字
17abccab1d22:是镜像的id
使用docker ps可以查看正在运行的容器(docker ps -a查看所有的容器)
在这里插入图片描述
再使用docker logs 容器id 来查看日志,看到如下日志证明启动成功
在这里插入图片描述
测试:访问宿主机ip:端口,像这样说明apollo-configservice启动完成
在这里插入图片描述
(2)启动apollo-adminservice
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
看到上面的日志证明启动成功
再次访问宿主机ip:32782
在这里插入图片描述
发现apollo-adminservice也注册成功
(3)启动apollo-portal
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问宿主机ip:32784就可以看到部署成功,使用apollo admin就可以登录。部署成功后可以使用自己的项目做配置测试,熟练apollo的运用。
在这里插入图片描述
写着写着觉得有点长,rancher部署会在第二篇写。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐