CentOS7使用docker部署Apollo配置中心的实现

 更新时间:2020年10月23日 10:33:56   作者:cc_want  
这篇文章主要介绍了CentOS7使用docker部署Apollo配置中心的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Apollo开源地址:

https://github.com/ctripcorp/apollo

第一步

将项目clone到本地,然后在github的releases页面中下载三个zip文件

本文中重点讲解截止2019年1月最新的1.2.0版本的部署方法

第二步

打开clone到本地的项目,目录结构如下

第三步

在此目录下创建docker-compose.yml文件,写入内容:

version: "3"

services:
 apollo-configservice:                     ##容器服务名
  container_name: apollo-configservice            ##容器名
  build: apollo-configservice/src/main/docker/        ##Dockerfile路径
  image: apollo-configservice             ##镜像名
  ports:
   - "9180:8080"  
  volumes:
   - "/opt/logs/100003171"  ##将/opt/logs/100003171目录挂载到宿主机的/Users/mobin/opt/logs/100003171方便在宿主机上查看日志
  environment:
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=123456

 apollo-adminservice:
  container_name: apollo-adminservice
  build: apollo-adminservice/src/main/docker/
  image: apollo-adminservice
  ports:
   - "9181:8090"
  depends_on:
   - apollo-configservice
  volumes:
   - "/opt/logs/100003172"
  environment:
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloConfigDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=123456

 apollo-portal:
  container_name: apollo-portal
  build: apollo-portal/src/main/docker/
  image: apollo-portal
  ports:
   - "9182:8070"
  depends_on:
   - apollo-adminservice
  volumes:
   - "/opt/logs/100003173"
  environment:
   - spring_datasource_url=jdbc:mysql://192.168.31.136:3306/ApolloPortalDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=123456

这里注意两点:

1.在这里,我将原本的8080,8070,8090端口分别映射到9180,9181,9182端口,因为8080等端口是常用端口,可能会和其他项目发生冲突。

2.记得修改mysql的连接地址

讲一下,这里可能有人会问为什么不用apollo项目中提供的quickstart-docker脚本,因为:

在quickstart-docker中,apollo开源项目组为了减少部署操作,内置了mysql等一系列配置,我们在使用的时候肯定不会使用内置的东西,我们希望将数据存在我们自己的mysql数据库中。还有就是quickstart-docker是为了我们方便演示使用的

第四步

将第一步下载的三个zip文件分别复制到以下目录中

<1>

<2>

<3>

注意:

这三个目录分别对应apollo-adminservice,apollo-configservice,apollo-portal服务,同时我们需要分别对这三个目录下的Dockerfile文件进行一下修改,打开Dockerfile文件

在这里,我们发现Dockerfile中指定的版本号是1.3.0-SNAPSHOT,但我们下载的zip包是1.2.0版本的,所以我们要分别对这三个Dockerfile进行版本号修改,修改好的文件如下:

第五步

登录mysql,导入下面文件夹中sql文件,进行数据库初始化

导入成功后,看到多了两个数据库

第六步

将整个项目apollo文件夹打包成zip文件,使用ftp或scp命令将文件上传到centos7服务器中,在服务器上执行以下命令

unzip apollo.zip
cd apollo
docker-compose up -d

然后看到命令输出

就表示这三个docker容器已创建成功

使用

docker ps -a

查看docker服务

发现已成功运行,现在打开浏览器,输入

http://0.0.0.0:9182

就可以看到Apollo的后台管理页面了

第七步

在第六步时,虽然部署完成但是这里有两个地方需要修改,否则会报错

1.进入apollo-portal容器

修改apollo-env环境变量

local.meta=http://localhost:9180
dev.meta=http://localhost:9180
fat.meta=http://localhost:9180
uat.meta=http://localhost:9180
lpt.meta=${lpt_meta}
pro.meta=http://localhost:9180

2.修改数据库ApolloConfigDB的ServerConfig表中的eureka.service.url字段

http://localhost:9180/eureka/

修改完成后重启apollo的三个容器即可

注意:

默认账号是apollo

默认密码admin

登录apollo后,打开系统信息页,可以看到这里有个Home Page Url,因为我们是在docker中部署的,所以这个地方显示的IP地址是有问题的,它的IP地址是Docker容器中的默认IP地址,这个地址是有问题的,因为我们在集成到项目中的时候,访问的是服务器IP,所以Docker容器中的IP地址是访问不了的,集成的时候就发现读取不了apollo的配置

官方有给出HomePageUrl的修改方法,但测试发现还是有问题的

官方的解决方案

在第3条

这里不建议直接修改HomePageUrl,最好的解决办法如下:

在Application中添加以下代码

static{
  System.setProperty("Dapollo.configService","http://192.168.X.X")
}

到此这篇关于CentOS7使用docker部署Apollo配置中心的实现的文章就介绍到这了,更多相关docker部署Apollo配置中心内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker安装阿里云服务器和在虚拟机安装遇到的坑(问题小结)

    Docker安装阿里云服务器和在虚拟机安装遇到的坑(问题小结)

    这篇文章主要介绍了Docker安装阿里云服务器和在虚拟机安装遇到的坑,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker容器Container镜像Image如何存储详解

    Docker容器Container镜像Image如何存储详解

    本文主要介绍Docker容器(Container)和镜像(Image)是如何进行数据存储详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • docker之更新jar问题

    docker之更新jar问题

    这篇文章主要介绍了docker之更新jar问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • docker设置了端口映射,不能访问的解决方案

    docker设置了端口映射,不能访问的解决方案

    这篇文章主要介绍了docker设置了端口映射,不能访问的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker 解决容器时间与主机时间不一致的问题三种解决方案

    Docker 解决容器时间与主机时间不一致的问题三种解决方案

    这篇文章主要介绍了Docker 解决容器时间与主机时间不一致的问题的相关资料,这里提供了三种方法,供大家参考,需要的朋友可以参考下
    2016-12-12
  • 使用Docker安装和配置 MySQL 数据库的过程详解

    使用Docker安装和配置 MySQL 数据库的过程详解

    本文将介绍如何使用Docker来安装和配置MySQL数据库,以便在开发和测试环境中快速搭建MySQL实例,本文也是介绍两种方式进行分别是“使用镜像安装”、“使用Docker Compose安装”,感兴趣的朋友一起看看吧
    2023-12-12
  • 详解如何优雅的给Docker配置网络代理

    详解如何优雅的给Docker配置网络代理

    有时因为网络原因,比如公司 NAT,或其它啥的,需要使用代理,这篇文章主要为大家详细介绍了如何优雅的给Docker配置网络代理,需要的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • docker 安装ElasticSearch 6.x的教程详解

    docker 安装ElasticSearch 6.x的教程详解

    这篇文章主要介绍了docker 安装ElasticSearch 6.x的教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • docker-compose搭建mongodb、mysql的详细过程

    docker-compose搭建mongodb、mysql的详细过程

    这篇文章主要介绍了docker-compose搭建mongodb、mysql的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • docker生命周期管理和镜像管理命令详解

    docker生命周期管理和镜像管理命令详解

    Docker通过容器技术提供了一种轻量级、快速部署和可移植的应用程序运行环境,极大地简化了应用程序的部署和管理过程,提高了开发和运维的效率,这篇文章主要介绍了docker生命周期管理和镜像管理命令,需要的朋友可以参考下
    2023-08-08

最新评论