1.Apollot简述

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景;服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器;Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。可以很好的替代Spring Cloud Config

2.部署说明

使用Docker可以快速方便的部署Apollo,部署时将Apollo-configservice、Apollo-adminservice、Apollo-portal分别Docker化,以便提高其扩展性,其中MySQL并没有Docker化。

3.部署步骤

3.1.数据库初始化工作参见官网

3.2. 修改portal端口

由于是在一台机器上进行(伪)分布式部署Apollo,所以需要在修改portal/script/startup.sh中的端口,如果是在不同的机器上部署则可忽略
SERVER_PORT=8080 => SERVER_PORT=8070

3.3. 修改Eureka地址

adminservice启动时会将自己作为服务注册到configservice注册中心中,默认为http://localhost:/8080/eureka,所以需要将ApolloConfigDB.ServerConfig表中的
eureka.service.url字段修改为:http://apollo-configservice/8080/eureka,这样adminservice启动时就会在configservice容器中进行注册

(apollo-configservice为容器编排时configservice容器的服务名,同一网络中的容器可以使用容器服务名访问其他容器)

3.4. 修改Meta Service地址

Portal和Apollo Client都需要从Meta Service(即apollo-configservice本身)获取服务地址,然后通过服务地址直接访问,Meta Service地址修改在build.sh,
由dev_meta=http://localhost:8080修改为dev_meta=http://apollo-configservice:8080

3.5. 执行编译、打包

修改完以上配置后,在apollo/script/下执行命令:./build.sh
执行完后将configservice、adminservice、portal的target路径下apollo-xxx-0.9.0-SNAPSHOT-github.zip分别复制到configservice、adminservice、portal的src/main/docker目录,
和Dockerfile放在一起,因为在使用Dockerfile文件制作镜像进需要用这些包

3.6. 编写docker-compose.yml

使用Docker compose可以定义和运行多个Docke容器应用,所以使用Docker compose对configservice、adminservice、portal进行服务编排

version: "3"

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

执行命令:docker-compose up -d

然后访问localhost:8080和localhost:8070即可

注意:

1. 如果是在mac环境下volumes的宿主机挂载路径必须是/Users/用户名/xxx,而不能是/xxx,如果将上述的volumes值改为如下将会报错

volumes: - "/opt/logs/100003172:/opt/logs/100003172"

参考资料

Apollo分布式部署

Docker部署Apollo配置中心的更多相关文章

  1. Win10上部署Apollo配置中心

    基于Docker在Win10上部署Apollo配置中心 https://www.jianshu.com/p/a1215056ce75 http://nobodyiam.com/2016/07/09/i ...

  2. docker apollo配置中心分布式部署

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

  3. Apollo配置中心--安装使用-docker

    官网:https://github.com/ctripcorp/apollo Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推 ...

  4. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

  5. spring boot2.1读取 apollo 配置中心1

    第一篇:搭建apollo配置中心 为什么选择apollo,我做了一些对比:   Diamond Disconf Apollo Spring Cloud Config 数据持久性 mysql mysql ...

  6. Centos中使用Docker部署Apollo

    采用微服务开发框架开发项目时会涉及多个系统,如果要更改配置参数需要在多个系统间逐一更改,比较费时,而且容易遗漏,效率低下,次问题可以采用Apollo配置中心的方式解决,下面将介绍如何配置: 准备环境: ...

  7. Apollo配置中心的实战

    31.携程 Apollo 配置中心介绍~1.mp4 32.Apollo核心概念~1.mp4 32.Apollo核心概念~1.mp4 每个应用需要有一个唯一的AppID 要在指定的机器上的server. ...

  8. .NET Core 下使用 Apollo 配置中心

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

  9. k8s-2-集成apollo配置中心

    主题: 在k8s中集成Apollo配置中心 架构图 一.配置中心概述 配置的几种方式 本课讲得是基于配置中心数据库实现 配置管理的现状 常见的配置中心 主讲:k8s configmap,apollo ...

随机推荐

  1. JavaScript之父谈JavaScript

    本文翻译自popularity,为了更好的阅读我把部分内容进行了增删改,如果你英语比较好,建议直接阅读原文,因为这篇文章是我通过google翻译再进行修改的. 貌似(根据一位精神导师的说法)JavaS ...

  2. .vue文件在webstorm中es6语法报错解决方法

    1 语法支持es6设置 Preferences > Languages & Frameworks > JavaScript 把 Javascript Language versio ...

  3. 单用户模式与救援模式:linux学习第三篇

    单用户模式 1.      重新启动,在下列界面选项第一项按 e 按e后进入此grub界面(启动工具) 2.      找到linux16所在行,将'ro'(只读)修改为'rw'(读写),并加上 in ...

  4. block,inline,inline-block的区别

    最近正在复习,紧张地准备几天后的笔试,然后刚好看到这个地方. block:块级元素,会换行,如div,p,h1~h6,table这些,可以设置宽高:    inline:行内元素,不换行,挤在一行显示 ...

  5. Openwrt上使用dnsmasq和ipset实现域名分流

    目标 部署一台自动代理路由器,实现根据域名来自动设定直连或者代理,而我要做的只是设置PC的默认网关为主路由器(192.168.0.1)还是自动代理路由器(192.168.0.254). 创建Openw ...

  6. Java经典编程题50道之三十七

    有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. public class Example37 { public static v ...

  7. STAThread 和 MTAThread

    STAThread:single threaded apartment 直译过来是:单线程单元套间 MTAThread:multiple threaded apartment 直译过来是:多线程单元套 ...

  8. ubuntu下boost编译安装

    ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev l ...

  9. vim操作备忘录

    vim操作备忘录 vim 备忘录 vim的书籍虽然看不不少,可是老是容易忘记,主要是自己操作总结过少,这个博客就主要用来记录一些比较常见的术语和操作,以防止自己再次忘记. <leader> ...

  10. Mysql引擎中MyISAM和InnoDB的区别有哪些?

    简单的概括一下 InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和 ...