一、本文要点
本文将介绍利用docker快速搭建开发环境,搭建Apollo配置中心,使代码配置分离以及可以动态变更配置。系列文章完整目录
- docker 命令
- docker 安装apollo
- docker-compose使用
- docker-compose.yml 文件制作
- docker network 网络
二、开发环境
- docker 18.09.7, build 2d0083d
- linux 64位
- apollo 1.8.1
三、安装docker
1、安装docker 参考:blog.csdn.net/caiwen_5050…
2、安装docker-compose
## 下载
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 创建软链
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
四、安装mysql
1、安装mysql。 参考:《搭建大型分布式服务(四)Docker搭建开发环境安装Mysql》
2、导入Apollo脚本
## 检出
git clone https://github.com/ctripcorp/apollo.git
## 在上一步安装的mysql导入数据库
cd apollo/scripts/sql
mysql -hx.x.x.x -uxxx -pxxxx < apolloconfigdb.sql
mysql -hx.x.x.x -uxxx -pxxxx < apolloportaldb.sql
五、安装apollo
1、准备一台机器,例如9.x.x.x,也可以是上面安装的数据库的机器,记住ip地址,并确保没有占用8080、8090、8070端口。
2、修改数据库eureka配置。
update ApolloConfigDB.ServerConfig set Value = "http://9.x.x.x:8080/eureka/" where Id = 1;
3、新增容器网络。
docker network ls
# 根据机器实际网段设置
docker network create localdev --subnet 10.0.1.0/24
4、创建docker-compose.yml文件。
mkdir -p /usr/local/apollo
cd /usr/local/apollo
mkdir -p logs/configservice
mkdir -p logs/adminservice
mkdir -p logs/portalservice
vim docker-compose.yml
5、编写docker-compose.yml,替换数据库ip和要安装apollo的机器ip。
version: "3"
networks:
default:
external:
name: localdev
services:
apollo-configservice:
container_name: apollo-configservice
image: apolloconfig/apollo-configservice:1.8.1
ports:
- "8080:8080"
volumes:
- "$PWD/logs/configservice:/opt/logs/100003171"
environment:
- spring_datasource_url=jdbc:mysql://数据库ip:3306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=123456
- eureka.instance.ip-address=安装apollo的机器ip # 指定注册地址,不然客户端访问的是上面10.0.1.0/24的地址
apollo-adminservice:
container_name: apollo-adminservice
image: apolloconfig/apollo-adminservice:1.8.1
ports:
- "8090:8090"
depends_on:
- apollo-configservice
links:
- apollo-configservice
volumes:
- "$PWD/logs/adminservice:/opt/logs/100003172"
environment:
- spring_datasource_url=jdbc:mysql://数据库ip:3306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=123456
- eureka.instance.ip-address=安装apollo的机器ip # 指定注册地址,不然客户端访问的是上面10.0.1.0/24的地址
apolo-portal:
container_name: apollo-portal
image: apolloconfig/apollo-portal:1.8.1
ports:
- "8070:8070"
volumes:
- "$PWD/logs/portalservice:/opt/logs/100003173"
environment:
- spring_datasource_url=jdbc:mysql://数据库ip:3306/ApolloPortalDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=123456
- apollo_portal_envs=dev # 有多个环境可以支持多个
- dev_meta=http://安装apollo的机器ip:8080 # 有多个环境可以支持多个
六、运行一下
1、启动容器。
# 启动apollo 3个容器
docker-compose up -d
# 如果启动失败可以尝试restart
docker-compose restart
2、访问地址
eureka地址:http://9.x.x.x:8080
ui 地址:http://9.x.x.x:8070 账号/密码:apollo/admin
七、小结
简单几条命令,就搭建好apollo了,是不是很简单。不过这里只是开发版,正式环境的部署要考虑高可用,会稍微复杂一点。下一篇《搭建大型分布式服务(十六)Springboot整合apollo》
加我一起交流学习!