Apollo配置中心Docker部署

Apollo开源地址:https://github.com/ctripcorp/apollo

第一步

将项目clone到本地,git clone https://github.com/ctripcorp/apollo.git

第二步

打开clone到本地的项目,目录结构如下

Apollo配置中心Docker部署

第三步

在此目录下创建apollo-compose.yml文件,写入内容:

version: "3"
 
services:
  apollo-configservice:                                         ##容器服务名
    container_name: wujun.apollo-configservice                        ##容器名
    build: apollo-configservice/src/main/docker/                ##Dockerfile路径
    image: wujun/apollo-configservice                         ##镜像名
    ports:
      - "8080:8080"    
    volumes:
      - "/opt/logs/100003171"    ##将/opt/logs/100003171目录挂载到宿主机的/opt/logs/100003171方便在宿主机上查看日志
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - eureka_instance_ip_address=192.168.92.131  ##解决Eureka注册ip错误问题, 默认向eureka注册的是镜像自身ip
  apollo-adminservice:
    container_name: wujun.apollo-adminservice
    build: apollo-adminservice/src/main/docker/
    image: wujun/apollo-adminservice
    ports:
      - "8090:8090"
    depends_on:
      - apollo-configservice
    volumes:
      - "/opt/logs/100003172"
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloConfigDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - eureka_instance_ip-address=192.168.92.131 ##解决Eureka注册ip错误问题, 默认向eureka注册的是镜像自身ip
  apollo-portal:
    container_name: wujun.apollo-portal
    build: apollo-portal/src/main/docker/
    image: wujun/apollo-portal
    ports:
      - "8070:8070"
    depends_on:
      - apollo-adminservice
    volumes:
      - "/opt/logs/100003173"
    environment:
      - spring_datasource_url=jdbc:mysql://192.168.92.131:3306/ApolloPortalDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=root
      - apollo_portal_envs=dev                         ##指定apollo dev环境,多个环境以逗号分隔
      - dev_meta=http://192.168.92.131:8080  ##dev环境meta-server地址,即eureka地址

注意:

记得修改mysql的连接地址

讲一下,这里可能有人会问为什么不用apollo项目中提供的quickstart-docker脚本,因为:

在quickstart-docker中,apollo开源项目组为了减少部署操作,内置了mysql等一系列配置,我们在使用的时候肯定不会使用内置的东西,我们希望将数据存在我们自己的mysql数据库中。还有就是quickstart-docker是为了我们方便演示使用的。

第四步

先修改apollo-configservice、apollo-adminservice中bootstrap.yml文件,往里添加:

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

然后执行scripts脚本目录下build.sh,打包完成。

第五步

登录mysql,导入下面文件夹中sql文件,进行数据库初始化;

5.1 新建mysql-compose.yml:

version: "3"
services:

    mysql-5.7:
         image: "mysql:5.7"
         container_name: mysql5.7
         restart: always
         environment:
              MYSQL_ROOT_PASSWORD: "root"
              MYSQL_USER: 'test'
              MYSQL_PASS: 'test'
         volumes:
           - "/apollo文件路径/apollo/scripts/sql:/sql"
         ports:
           - "3306:3306"

执行:docker-compose -f mysql-compose.yml up -d mysql-5.7

5.2 进入mysql容器内部,执行初始化sql脚本

>docker exec -it mysql5.7 bash

>cd /sql

>mysql -uroot -proot

>source apolloconfigdb.sql

>source apolloportaldb.sql

注意: admin的eureka连接需要在ApolloPortalDB数据库的ServerConfig表中配置。配置eureka.service.url的value为部署的configservice docker的访问url!,这里就是:http://192.168.92.131:8080/eureka/

 Apollo配置中心Docker部署

 第六步

在apollo项目路径下,执行:docker-compose -f apollo-compose.yml up -d 

然后看到命令输出

Apollo配置中心Docker部署

就表示这三个docker容器已创建成功

使用 docker ps 查看docker 服务

第七步:

启动成功后访问:http://192.168.92.131:8070/

默认账号是apollo

默认密码admin

登录成功后打开系统信息页,可以看到这里有个Home Page Url,已经是服务的具体地址,而不是Docker容器中默认IP地址,已经可以提供项目集成访问。

 Apollo配置中心Docker部署

 

 

 

上一篇:apollo


下一篇:Spring Cloud Apollo 实践