docker安装apollo并接入若依框架


上一个项目中使用了携程的Apollo框架,就比较感兴趣,然后捣腾着学习了一下安装使用。

拉取镜像

我这边是用docker安装的,在本地机子上,然后映射到公网上,为了本地机环境干净点,选择了docker安装;
首先查看一下docker的镜像:
docker search apollo
在这里插入图片描述
没有选择apollo-quick-start,拉取了apollo-configservice,apollo-adminservice,apollo-portal:
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest

初始化数据库

我用的本地docker安装的mysql,这里直接运行sql文件,我之前也是在博客上查资料,在一个帖子那里拿的github链接,结果里面的可能是过时了,最后运行时少了表,ApolloPortalDB的SPRING_SESSION表不存在,不知道还有其他缺失没。。。

运行sql

文件地址:https://github.com/apolloconfig/apollo/blob/master/scripts/sql/src/
在这里插入图片描述
这里我多建了一个ApolloConfigDB_pro,用来建造第二个环境pro,直接把ApolloConfigDB整个copy过来就行了;

修改ApolloConfigDB配置

这里注意一下,ApolloConfigDB和ApolloConfigDB_pro分别运行了dev和pro环境,所以里面的ServerConfig表要改一下,
在这里插入图片描述
在这里插入图片描述
这里apollo每个环境都要有自己的ApolloConfigDB库,以及apollo-configservice和apollo-adminservice,apollo-portal是共用的;所以两个ServerConfig表中标记的字段要换成所在环境最终部署的apollo-configservice服务的ip:port上,我把这两个环境都放在同一台机子上,只是端口一个7080一个7081;

运行容器

容器运行有先后顺序的,apollo-configservice>apollo-adminservice>apollo-portal;
这里之前已经拉取了镜像:
在这里插入图片描述
下面启动apollo-configservice:

docker run -d                                  //后台运行
--restart=always                               //总是启动
--name apollo-configservice                    //容器名
-p 7080:8080                                   //宿主机端口:容器端口  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8"    //链接的数据库链接,其中这里由于是局域网,为了防止ip跳动,使用--link mysql链接容器数据库,mysql是我的数据库容器名
-e SPRING_DATASOURCE_USERNAME=root              //数据库用户
-e SPRING_DATASOURCE_PASSWORD=123456            //数据库密码
-v /usr/local/apollo/apolloConfigservice/logs:/opt/logs   //将容器日志挂载到宿主机,方便查看日志排除问题
--link mysql                                   //链接数据库容器
apolloconfig/apollo-configservice:latest       //使用的镜像
docker run -d                                  //后台运行
--restart=always                               //总是启动
--name apollo-configservice                    //容器名
-p 7080:8080                                   //宿主机端口:容器端口  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8"    //链接的数据库链接,其中这里由于是局域网,为了防止ip跳动,使用--link mysql链接容器数据库,mysql是我的数据库容器名
-e SPRING_DATASOURCE_USERNAME=root              //数据库用户
-e SPRING_DATASOURCE_PASSWORD=123456            //数据库密码
-v /usr/local/apollo/apolloConfigservice/logs:/opt/logs   //将容器日志挂载到宿主机,方便查看日志排除问题
--link mysql                                   //链接数据库容器
apolloconfig/apollo-configservice:latest       //使用的镜像

启动apollo-configservice-pro:

docker run -d 
--restart=always 
--name apollo-configservice-pro 
-p 7081:8080 
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB_pro?characterEncoding=utf8" 
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456 
-v /usr/local/apollo/apolloConfigservice_pro/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-configservice:latest
docker run -d 
--restart=always 
--name apollo-configservice-pro 
-p 7081:8080 
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB_pro?characterEncoding=utf8" 
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456 
-v /usr/local/apollo/apolloConfigservice_pro/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-configservice:latest

启动apollo-adminservice:

docker run -d 
--restart=always 
--name apollo-adminservice 
-p 7090:8090  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456  
-v /usr/local/apollo/apolloAdminservice/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-adminservice:latest
docker run -d 
--restart=always 
--name apollo-adminservice 
-p 7090:8090  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456  
-v /usr/local/apollo/apolloAdminservice/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-adminservice:latest

启动apollo-adminservice-pro:

docker run -d 
--restart=always 
--name apollo-adminservice-pro 
-p 7091:8090  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB_pro?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456  
-v /usr/local/apollo/apolloAdminservice_pro/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-adminservice:latest
docker run -d 
--restart=always 
--name apollo-adminservice-pro 
-p 7091:8090  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB_pro?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456  
-v /usr/local/apollo/apolloAdminservice_pro/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-adminservice:latest

启动apollo-portal:

docker run -d 
--restart=always 
--name apollo-portal 
-p 7070:8070  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456 
-e APOLLO_PORTAL_ENVS=dev,pro                    //有俩环境,所以这里给配了,用逗号分隔开
-e DEV_META=http://xx.xx.xx.xx:7080            //这个是apollo-configservice的地址,我本地机没固定ip,直接使用映射到公网的地址端口
-e PRO_META=http://xx.xx.xx.xx:7081            //这个是apollo-configservice-pro的地址,我本地机没固定ip,直接使用映射到公网的地址端口
-v /usr/local/apollo/apolloPortal/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-portal:latest
docker run -d 
--restart=always 
--name apollo-portal 
-p 7070:8070  
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8"  
-e SPRING_DATASOURCE_USERNAME=root 
-e SPRING_DATASOURCE_PASSWORD=123456 
-e APOLLO_PORTAL_ENVS=dev,pro                    //有俩环境,所以这里给配了,用逗号分隔开
-e DEV_META=http://xx.xx.xx.xx:7080            //这个是apollo-configservice的地址,我本地机没固定ip,直接使用映射到公网的地址端口
-e PRO_META=http://xx.xx.xx.xx:7081            //这个是apollo-configservice-pro的地址,我本地机没固定ip,直接使用映射到公网的地址端口
-v /usr/local/apollo/apolloPortal/logs:/opt/logs 
--link mysql 
apolloconfig/apollo-portal:latest

好了,都启动完了。
在这里插入图片描述

登录界面操作

登录

接下来就可以在页面上展示了,我的portal服务用了7070端口,直接打开:
在这里插入图片描述
默认账密是:apollo/admin,登陆进去:
在这里插入图片描述

建用户

我新建了一个用户:右上角的管理员工具>用户管理:
在这里插入图片描述

添加部门

管理员工具>系统参数
key里输入organizations,点查询:
在这里插入图片描述
里面只有样例部门1和样例部门2,我加了一个开发部门;

添加环境

管理员工具>系统参数,输入key:apollo.portal.envs,点查询:
在这里插入图片描述
这里应该只有一个dev,在后面加上pro,或者直接在数据库里加也行,
在这里插入图片描述
接下来退出登录,用刚建的新账号登录去创建项目吧。

创建项目

点击左边的创建应用,进入界面:
在这里插入图片描述
我使用的若依项目,所以,AppId选了刚建的部门DEVELOP,AppId写ruoyi,应用名称写ruoyi-server,应用负责人就当前用户,然后提交,首页就多了一个ruoyi项目;
在这里插入图片描述
点进去,点击左侧的添加namespace,
在这里插入图片描述
我创建了一个application-druid的命名空间,相当于我们项目中的application-druid.yml文件;
在这里插入图片描述
接下来就是导入配置了,若依项目使用的yml,我在网上找了一个yml转properties的站点,直接转换后就copy到了命名空间里:https://www.toyaml.com/index.html
在这里插入图片描述
好了,配置已经导入了Apollo,dev和pro都导了,可以先导入一个环境,然后使用同步配置功能同步过去:在这里插入图片描述
在这里插入图片描述
记得完了之后要发布,不然没效果的。

修改项目使引入apollo

引入依赖

首先在ruoyi-admin的pom文件中引入依赖

<!--apollo配置-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.3.0</version>
        </dependency>
<!--apollo配置-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.3.0</version>
        </dependency>

添加注解

在启动类上添加注解@EnableApolloConfig

改配置文件

首先把application.yml和application-druid.yml全部注释,然后在application.yml中写入:

app:
  id: ruoyi #在配置中心配置的应用身份信息(apollo中创建的)
apollo:
  bootstrap:
    namespaces: application,DEVELOP.application-druid # 配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件
    enabled: true #在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息
    connectTimeout: 50000
    readTimeout: 100000
    eagerLoad:
      enabled: true #将Apollo配置加载提到初始化日志系统之前
app:
  id: ruoyi #在配置中心配置的应用身份信息(apollo中创建的,暂时咱们还没创建)
apollo:
  bootstrap:
    namespaces: application,DEVELOP.application-druid # 配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件
    enabled: true #在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息
    connectTimeout: 50000
    readTimeout: 100000
    eagerLoad:
      enabled: true #将Apollo配置加载提到初始化日志系统之前

我把这两个超时时间都加大了10倍,因为一开始我连的aliyun的数据库,性能实在不行后换了本地数据库了;
注意命名空间,我在新建application-druid时自动添加部门前缀那里是勾上的,所以此处要加上部门前缀DEVELOP;

添加启动参数

在这里插入图片描述
在这里插入图片描述
此处把你的环境和该环境所在apollo-configservice的地址加进去,后面如果部署到服务器,可以在dockerfile中把这两个参数加进去;
测试环境就把那个pro的配置进去,引入pro环境配置;
切记,jdk版本不要太高,我本地和服务器都是java17,跑起来老是报Unable to initialize Apollo Spring Injector!或者Unable to load cache item其他的错误!最后没办法全部装了jdk1.8,其他版本我也不知道;
到此处基本就接入成功了!

  • 45
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值