Apollo配置中心的好处以及用法可以自行度娘,我这里记录的是怎么在Docker中安装。
Apollo配置服务共有三个服务组成:
具体三个服务代表什么意思,可以自行度娘。
一、在安装这三个服务之前需要先建立两个数据库,用来存放Apollo的数据:
下载sql文件:https://github.com/ctripcorp/apollo/tree/master/scripts/docker-quick-start/sql
下载SQL文件后自行执行,这些SQL文件的内容就是创建相应的数据库和数据表和初始的数据类容。
注意:数据库不要自己手动创建,脚本会自动生成。
二、由于之前两章已经讲了两种方式拉取镜像和启动容器,这里我就不废话了,直接用代码这种方式启动容器。分别执行下面3段代码,启动三个容器(代码不能直接运行,需要修改对应内容):
docker run
-p 8080:8080
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=123456
-d
-v /root/apollo/temp/logs:/opt/logs
--name apollo-configservice
--restart=always
apolloconfig/apollo-configservice
docker run
-p 8090:8090
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=123456
-d
-v /root/apollo/temp/logs:/opt/logs
--name apollo-adminservice
--restart=always
apolloconfig/apollo-adminservice
docker run
-p 8070:8070
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库IP:3306/ApolloPortalDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=123456
-e APOLLO_PORTAL_ENVS=dev,pro
-e DEV_META=http://服务器公网IP:8080
-e PRO_META=http://服务器公网IP:8080
-d -v /root/apollo/temp/logs:/opt/logs
--name apollo-portal
--restart=always
apolloconfig/apollo-portal
注意:上面代码中具体的命令参数可以去查看DockerHub上对应镜像的说明,也可以自己度娘。
数据库IP:可以是内网也可以是公网,如果数据库的容器和Apollo的容器在同一个Docker服务下可以直接使用容器之间的内网IP,可以通过Portainer查看每个容器自己的内网IP,但问题是如果数据库的容器被销毁后新建的话容器IP可能会变,引起很多问题。
服务器公网IP:一个是开发环境,一个是生产环境,当然现在我们只有一台服务器,那就一样的就行。
eureka服务IP:如果登陆后出现错误,请联系管理员之类的,可以检查一下数据表中该配置项,应该是apollo-configservice服务的地址,如果修改后记得重启一下三个服务,然后多等一会在试试会不会有同样的错误,这里修改后感觉要过几分钟才有效。
三、到Portainer查看三个服务是否正常,也可以在物理机上用Docker ps命令查看:
运行正常后,在物理机开放对应的端口:
然后通过公网IP 加端口8070(xxx.xxx.xxx.xxx:8070)就可以访问:
出现该界面表示正常,通过默认用户登录后自行修改用户密码:
Apollo配置中心的使用方式自行度娘,我这里配置了两个应用,因为后面我们写了两个服务,一个是后端API,一个是前端网站,图下图:
后端API配置了连接数据库的字符串以及一些其他配置项:
前端Web就配置了一个API的地址:
到这里,我们就安装好apollo了。
补充:大体流程就是如上所描述,但是大家一定要放平心态,就算教程再详细,安装过程总会出现那么一些不尽如人意的问题,遇到问题咱们解决就行了。曾经有人跟我说过:“没有解决不来的问题,如果有,那就是方法不对,换一个方法试试”。
下一章我们讲打包自己的程序为Docker镜像