Skip to content

Apollo多环境docker部署

更新日期 2022-7-21
  • 2022-7-21 创建文档
开发环境
  • centos 7
  • MySQL 5.7
  • Docker 18.03.1-ce
  • apollo 1.9.2

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置, 配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

我们使用docker部署apollo,需要部署2个环境:DEV、FAT。假设部署在服务器 x.x.x.1 上。

最后部署了5个进程

  • apollo-portal
  • apollo-adminservice-AnRFDev-FAT
  • apollo-configservice-AnRFDev-FAT
  • apollo-adminservice-AnRFDev-DEV
  • apollo-configservice-AnRFDev-DEV

数据库准备

先把基础的东西弄好。这里使用的是MySQL 5.7,数据库部署过程略。数据库可以运行在其他服务器,或者本地服务器。这里假设MySQL在同一个服务器上。

在mysql里初始化3个数据库。我们需要的是1个portal,2个config。

sql文件参考github:

环境不同的话可以修改数据库名字。把 apolloconfigdb.sql 里面的数据库名字改为 ApolloConfigDBDEV 或者 ApolloConfigDBFAT

我们可以用workbench执行sql,得到3个数据库。分别是:

  • ApolloConfigDBDEV
  • ApolloConfigDBFAT
  • ApolloPortalDB

数据库配置

要把Config数据库里的eureka.service.url配置正确。我们直接修改数据库里的值。

  • DEV使用端口
    • config: 8091
    • admin: 8090
  • FAT使用端口
    • config: 8093
    • admin: 8092

DEV

ApolloConfigDBDEV.ServerConfg

key value
eureka.service.url http://x.x.x.1:8091/eureka/

FAT

ApolloConfigDBFAT.ServerConfg

key value
eureka.service.url http://x.x.x.1:8093/eureka/

部署 DEV 环境

DEV configservice

首选获取镜像 apollo-configservice:1.9.2

docker pull apolloconfig/apollo-configservice:1.9.2

启动DEV环境的configservice

docker run -p 8091:8080 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://x.x.x.1:3317/ApolloConfigDBDEV?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=<你的数据库密码> \
    -d -v /root/rustfisher/apollo/dev/config/logs:/opt/logs --name apollo-configservice-AnRFDev-DEV apolloconfig/apollo-configservice:1.9.2

修改Home Page Url

这步必须做,否则用的是容器的ip,别人连不上。

进入容器去改 startup.sh

docker exec -it apollo-configservice-AnRFDev-DEV bash

vi apollo-configservice/scripts/startup.sh 

添加Java选项
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.homePageUrl=http://x.x.x.1:8091"
端口要对应docker映射出去的。

保存脚本后,退出容器。然后重启容器。

DEV adminservice

获取docker镜像 apollo-adminservice:1.9.2

docker pull apolloconfig/apollo-adminservice:1.9.2

启动adminservice
docker run -p 8090:8090 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://x.x.x.1:3317/ApolloConfigDBDEV?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=<你的数据库密码> \
    -d -v /root/rustfisher/apollo/dev/config/admin/logs:/opt/logs --name apollo-adminservice-AnRFDev-DEV apolloconfig/apollo-adminservice:1.9.2

修改 Home Page Url

和上面的类似,进入容器去修改启动脚本 startup.sh

docker exec -it apollo-adminservice-AnRFDev-DEV bash

vi apollo-adminservice/scripts/startup.sh
添加的配置
export JAVA_OPTS="$JAVA_OPTS -Deureka.instance.homePageUrl=http://x.x.x.1:8090"

保存脚本后,退出容器。然后重启容器。

部署 FAT 环境

方法与上面DEV的类似,但是要修改对应端口和路径。

部署portal

我们前面先把config和admin服务部署好。最后来部署portal服务。

获取apollo-portal:1.9.2

docker pull apolloconfig/apollo-portal:1.9.2

部署portal
docker run -p 8070:8070 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://x.x.x.1:3317/ApolloPortalDB?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=<你的数据库密码> \
    -e APOLLO_PORTAL_ENVS=dev,fat \
    -e DEV_META=http://x.x.x.1:8091 -e FAT_META=http://x.x.x.1:8093 \
    -d -v /root/rustfisher/apollo/portal/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:1.9.2

部署OK后,打开浏览器查看 portal: http://x.x.x.1:8070/

默认账号 apollo/admin

端口开放

某些云服务器会设置有安全组,需要去控制台修改安全组规则,允许一下我们用到的端口。

同时还需要检查服务器上的防火墙,ufw或者是firewall

firewall简单使用

添加允许的端口

firewall-cmd --zone=public --add-port=22/tcp --permanent
其中–permanent的作用是使设置永久生效,不加的话机器重启之后失效

重新载入一下防火墙设置,使设置立即生效,执行下命令,设置才会生效

firewall-cmd --reload

可通过如下命令查看是否生效

firewall-cmd --zone=public --query-port=22/tcp

如下命令可查看当前系统打开的所有端口

firewall-cmd --zone=public --list-ports

默认密码

部署成功后,到portal的页面,改掉默认的密码

管理员工具 - 用户管理

参考

扩展阅读

作者: rustfisher.com | rf.cs@foxmail.com
示例地址: AndroidTutorial Gitee, Tutorial Github | 反馈问题: -> Android issues - gitee
本文链接: https://www.an.rustfisher.com/apollo/apollo-docker-run-dev-fat/ |-> 本站文章最近更新
一家之言,仅当抛砖引玉。如有错漏,还请指出。下方的广告链接内容与本站无关。如果喜欢本站的内容,也可 -> 点击请作者喝咖啡 ,谢谢支持服务器。
微信订阅号