Apollo开源地址:https://github.com/ctripcorp/apollo
第一步
将项目clone到本地,git clone https://github.com/ctripcorp/apollo.git
第二步
打开clone到本地的项目,目录结构如下
第三步
在此目录下创建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-compose -f apollo-compose.yml up -d
然后看到命令输出
就表示这三个docker容器已创建成功
使用 docker ps 查看docker 服务
第七步:
启动成功后访问:http://192.168.92.131:8070/
默认账号是apollo
默认密码admin
登录成功后打开系统信息页,可以看到这里有个Home Page Url,已经是服务的具体地址,而不是Docker容器中默认IP地址,已经可以提供项目集成访问。