docker部署apollo详细教程

2020-06-17 06:38:33易采站长站整理

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-adminservice

FROM java:8-jre
MAINTAINER Louis

ENV VERSION 1.5.0

RUN apt-get install unzip

ADD apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip

RUN 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