Docker部署Apollo配置中心

1.Apollot简述mysql

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

 

2.部署说明github

使用Docker能够快速方便的部署Apollo,部署时将Apollo-configservice、Apollo-adminservice、Apollo-portal分别Docker化,以便提升其扩展性,其中MySQL并无Docker化。spring

 

3.部署步骤sql

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

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分布式部署

相关文章
相关标签/搜索