docker部署携程apollo服务配置中心:
概念 :
- apollo是一个配置发布服务
- apollo分为三部分,config,admin,portal
- config就是主逻辑
- admin是管理逻辑
- portal就是前端管理页面
部署方法:
前置条件:安装docker
# 首先创建一个network
docker network create --driver bridge --subnet 192.2.0.0/16 --gateway 192.2.0.1 my-test-net02
# 启动一个mysql服务
sudo docker run -p 3306:3306 --name mysql \
--net my-test-net02 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
# 配置mysql可以远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 给mysql初始化一些apollo需要的表
# 安装apoll odocker镜像
docker pull apolloconfig/apollo-configservice
docker pull apolloconfig/apollo-adminservice
docker pull apolloconfig/apollo-portal
# 启动config服务
docker run -itd --net my-test-net02 --restart=always -p 9180:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
# 修改数据库,apolloconfigDB库中 ServerConfig表的 eureka.service.url 值,该值需要为外网环境可以访问到的apolloconfig/apollo-configservice服务
# 启动admin service
docker run -itd --net my-test-net02 --restart=always -p 9181:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice
# 启动 portal service
docker run -itd --net my-test-net02 --restart=always -p 9182:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-e APOLLO_PORTAL_ENVS=dev \
-e DEV_META=http://192.168.200.129:9180/ \
-d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal
# 这里, DEV_META 也需要是 外网环境可以访问到的apolloconfig/apollo-configservice服务
# 最后,访问 apollo-portal 即可完成搭建
最后还要注意,如果仅仅是上面这样弄,虽然apollo成功启动,但由于docker内网端口映射等原因还是会造成取不到数据。
启动config服务时还需要加上:
-e eureka.instance.home-page-url=http://192.168.200.129:9180 \
手动指定eureka的外网地址端口,这样才能正确的获取。