当前位置 主页 > 网站技术 > 代码类 >

    docker部署apollo详细教程

    栏目:代码类 时间:2019-09-12 14:06

    1、前言

    apollo的详细介绍我就不在这里多说了,官网上https://github.com/ctripcorp/apollo 已经说的非常明白了,我就不在这班门弄斧了,还不了解的小伙伴可以去官网上去了解下。

    本篇文章只是记录我在使用docker部署的Apollo以及其集群的方式,给大家分享出来也自我做一个记录。

    注意: 我是直接部署开始的,有关数据库的创建和初始化自己根据官网搞定。

    2、源码编译

    2.1 网络策略

    网络策略直接使用官网描述的就可以,具体就是分别编辑apollo-configservice/src/main/resources/application.yml和apollo-adminservice/src/main/resources/application.yml,然后把需要忽略的网卡加进去。

    如下面这个例子就是对于apollo-configservice,把docker0和veth.*的网卡在注册到Eureka时忽略掉。

    spring:   application:     name: apollo-configservice   profiles:    active: ${apollo_profile}   cloud:    inetutils:     ignoredInterfaces:      - docker0      - veth.*

    注意,对于application.yml修改时要小心,千万不要把其它信息改错了,如spring.application.name等。

    2.2 动态指定注册网络

    在使用docker搭建集群是, adminservice、configservice都需要向注册中心注册地址,如果不指定注册IP,注册的是docker内部的网络,导致网络不通。

    在apollo-configservice/src/main/resources/bootstrap.yml和apollo-adminservice/src/main/resources/bootstrap.yml添加如下代码。

    eureka: instance:    ip-address: ${eureka.instance.ip-address}

    这个地方取值从环境变量中取,容器外部来配置这样给部署带来了更大的灵活性。

    到这源码的修改已经完成,直接build打包就可以了,拿到对应三个服务的zip包。

    如果懒得修改,也可以直接从https://github.com/yuelicn/apollo.拉下我修改好的源码直接打包即可。

    3、dockerfile编写

    Apollo 的Dockerfile非常简单, 直接使用官方提供的即可。下方是adminservice示例。

    # Dockerfile for apollo-adminservice# Build with:# docker build -t apollo-adminservice .# Run with:# docker run -p 8090:8090 -d --name apollo-adminservice apollo-adminserviceFROM java:8-jreMAINTAINER LouisENV VERSION 1.5.0RUN apt-get install unzipADD apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zipRUN unzip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip -d /apollo-adminservice \  && rm -rf /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip \  && sed -i '$d' /apollo-adminservice/scripts/startup.sh \  && echo "tail -f /dev/null" >> /apollo-adminservice/scripts/startup.shEXPOSE 8090CMD ["/apollo-adminservice/scripts/startup.sh"]

    需要注意的,

    1: version 需要根据自己打包的版本来修改
    2: ADD zip包时修改你路径

    三个服务的dockerfile文件基本相同,我就不在这多说了。需要的小伙伴直接从https://github.com/yuelicn/docker-apollo就可以了。

    4 docker-compose 的编写

    4.1 apollo-configservice-compose.yml

    version: "3"services: apollo-configservice:  container_name: apollo-configservice  build: apollo-configservice/  image: apollo-configservice  ports:   - 8080:8080  volumes:   - "/docker/apollo/logs/100003171:/opt/logs/100003171"  environment:   - spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloConfigDB_TEST?characterEncoding=utf8   - spring_datasource_username=root   - spring_datasource_password=mysql2019*   - eureka.instance.ip-address=172.11.11.11  restart: always