这篇文章上次修改于 674 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Apollo 的安装实在是太麻烦了,按照官方的安装方式要折腾死人,后来在网上找到一个网友整理的 Docker 安装镜像,简化了安装过程,但其中有一些坑,特此记录安装过程,以免后续再踩坑。

安装环境

  1. 操作系统:CentOS Linux release 7.8.2003 (Core)
  2. Docker 版本:Docker version 19.03.0, build aeac9490dc
  3. 宿主机 IP:192.168.20.105

安装过程

本来 Apollo 的安装也不是很复杂,但由于在 Docker 中安装,宿主机 IP、数据库 IP、容器内各服务 IP、Eureka 注册中心 IP,有些地方需要填宿主机 IP,有些地方又需要填容器内部 IP,稍微填错一个就会出问题。
  1. mkdir /home/ctrip-apollo
  2. cd /home/ctrip-apollo
  3. vi apollo-env.properties,文件内容如下:

    #本地默认环境配置,没啥用
    local.meta=http://localhost:8080
    #下面的环境,你有几个就添加几个,没有的或者不需要的可以直接删掉
    dev.meta=http://172.22.0.11:8080
    #fat.meta=http://172.22.0.11:8080
    #uat.meta=http://172.22.0.11:8080
    #lpt.meta=http://172.22.0.11:8080
    #pro.meta=http://172.22.0.11:8080
  4. vi docker-compose.yml,文件内容如下:

    version: "2"
    
    services:
      apollo-mysql:
        container_name: apollo-mysql
        image: pengfeilu/apollo-mysql:5.7.22_1.6.0
        ports:
          - "13306:3306"
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - UPDATE_EUREKA_URL_SQL=update ApolloConfigDB.ServerConfig set `Value`="http://172.22.0.11:8080/eureka/" where `Key`="eureka.service.url"
        networks:
          apollonet:
            ipv4_address: 172.22.0.10
      apollo-configservice:
        container_name: apollo-configservice
        image: pengfeilu/apollo-configservice:1.6.0
        ports:
          - "8080:8080"
        depends_on:
          - apollo-mysql
        volumes:
          - "/opt/logs/100003171:/opt/logs/100003171"
        environment:
          - spring_datasource_url=jdbc:mysql://172.22.0.10:3306/ApolloConfigDB?characterEncoding=utf8
          - spring_datasource_username=root
          - spring_datasource_password=root
          - host_ip=192.168.20.105 # 填写宿主机IP
        networks:
          apollonet:
            ipv4_address: 172.22.0.11
      apollo-adminservice:
        container_name: apollo-adminservice
        image: pengfeilu/apollo-adminservice:1.6.0
        ports:
          - "8090:8090"
        depends_on:
          - apollo-mysql
          - apollo-configservice
        links:
          - apollo-configservice
        volumes:
          - "/opt/logs/100003172:/opt/logs/100003172"
        environment:
          - spring_datasource_url=jdbc:mysql://172.22.0.10:3306/ApolloConfigDB?characterEncoding=utf8
          - spring_datasource_username=root
          - spring_datasource_password=root
          - host_ip=172.22.0.12 # 这里一定要填写apollo-adminservice容器内部IP
        networks:
          apollonet:
            ipv4_address: 172.22.0.12
      apolo-portal:
        container_name: apollo-portal
        image: pengfeilu/apollo-portal:1.6.0
        ports:
          - "8070:8070"
        volumes:
          - "/opt/logs/100003173:/opt/logs/100003173"
          - "/home/ctrip-apollo/apollo-env.properties:/apollo-portal/config/apollo-env.properties"
        environment:
          - spring_datasource_url=jdbc:mysql://172.22.0.10:3306/ApolloPortalDB?characterEncoding=utf8
          - spring_datasource_username=root
          - spring_datasource_password=root
        networks:
          apollonet:
            ipv4_address: 172.22.0.13
    networks:
      apollonet:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 172.22.0.0/16
              gateway: 172.22.0.1
  5. docker-compose up -d
  6. 打开浏览器,输入 http://192.168.20.105:8070/ 就可以访问 Apollo 配置中心了

附件