-
Notifications
You must be signed in to change notification settings - Fork 82
Home
Welcome to the docker-apollo wiki!
[TOC]
即开启包括Potal面板,和Dev/Fat/Uat/Pro环境中的一个或多个.这种方法适合开发者临时调试/测试环境的构建.
因为所有服务都是在同一个Docker容器中,相应的服务地址就是本地,而构建该镜像时默认所有环境的服务地址已经配置成localhost
,所以可以省略给Portal配置对应环境服务地址。
version: '2'
services:
apollo-all-in-one:
container_name: apollo-all-in-one
image: idoop/docker-apollo:latest
restart: always
# 如果portal出现504错误,则使用"host"模式
network_mode: "host"
environment:
# 开启Potal,默认端口:8070
# 配置数据库ServerConfig表apollo.portal.envs字段值为要开启的环境,这里是:dev,fat,uat
PORTAL_DB: jdbc:mysql://10.0.0.8:3306/ApolloPortalDB?characterEncoding=utf8
PORTAL_DB_USER: root
PORTAL_DB_PWD: password
# 开启Dev环境,默认端口Admin:8090,Config:8080
# 配置数据库ServerConfig表eureka.service.url字段值为http://localhost:8080/eureka/
DEV_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBDev?characterEncoding=utf8
DEV_DB_USER: root
DEV_DB_PWD: password
# 开启Fat环境,默认端口Admin:8091,Config:8081
# 配置数据库ServerConfig表eureka.service.url字段值为http://localhost:8081/eureka/
FAT_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBFat?characterEncoding=utf8
FAT_DB_USER: root
FAT_DB_PWD: password
# 开启Uat环境,如果网络模式为host则可以自定义一下Uat环境的端口
# 下方配置config端口为1000,则配置数据库ServerConfig表eureka.service.url字段值为http://localhost:1000/eureka/
UAT_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBUat?characterEncoding=utf8
UAT_DB_USER: root
UAT_DB_PWD: password
UAT_ADMIN_PORT: 2000
UAT_CONFIG_PORT: 1000
# 如果需要,还可以配置Pro环境
部署1个Portal,多个Dev环境服务和多个Fat环境服务,并假设IP10.0.1.99
开Nginx的80和90端口给dev环境做负载均衡,开8081和8091端口给fat环境做负载均衡.
Dev的docker-compose
配置,放在多个服务器上启动.
配置对应数据库中ServerConfig
表eureka.service.url
有两种配置方式:
- 配置字段值为
http://10.0.1.99:80/eureka/
,容器中会启动admin服务和config服务.这种配置的优点是portal端直接连上来可以看到连接数,并且portal端的容器中可以不用启动config和admin服务,直接配置远程地址.缺点则是每个容器中都会多一个admin服务,一个admin大概占用240-260MB的内存.- 配置字段值为
http://localhost:8080/eureka/
,并且需要设置ONLY_CONFIG
环境变量为TRUE
,则容器中只会启动config服务.这种配置的优点是节省了内存和cpu的消耗.但是缺点也很明显,portal的容器需要配置admin和config服务启动,这样一来则portal也需要连接对应环境的数据库地址.若是portal和config都在同一个网络中,则并无大碍,可如果两者是在不同网络,则需要暴露数据库的地址给portal,若不想暴露mysql可以参考下方云上config 线下portal的例子.
dev我们使用2的方法配置.
version: '2'
services:
apollo-dev:
image: idoop/docker-apollo:latest
restart: always
# 也可在nginx上设置转发端口,而这里则直接用host模式使用默认端口
ports:
- "80:8080"
- "80:8090"
environment:
# 只用开config服务
ONLY_CONFIG: "TRUE"
DEV_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBDev?characterEncoding=utf8
DEV_DB_USER: root
DEV_DB_PWD: password
# 这里用域名也可以,但要保证能被正常解析出IP.
# 如果设置了ONLY_CONFIG,也可以不设置LB地址,但推荐设置LB值,方便在Eureka页面查看.
#DEV_LB: 10.0.1.99
Fat的docker-compose
配置,放在多个服务器上启动.
配置对应数据库中ServerConfig
表eureka.service.url
字段值同上一样,也有两种方式:
- 配置字段值为
http://10.0.1.99:8081/eureka/
,优缺点同上.- 配置字段值为
http://localhost:8081/eureka/
并设置ONLY_CONFIG
值,优缺点同上.
fat用1的方法配置.
version: '2'
services:
apollo-fat:
image: idoop/docker-apollo:latest
restart: always
network_mode: host
environment:
FAT_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBFat?characterEncoding=utf8
FAT_DB_USER: root
FAT_DB_PWD: password
# 这里用域名也可以,但要保证能被正常解析出IP.
FAT_LB: 10.0.1.99
部署Portal
version: '2'
services:
portal:
container_name: apollo-portal
image: idoop/docker-apollo:latest
restart: always
# portal容易出现504错误,可以直接"host"模式
network_mode: host
environment:
# 配置数据库ServerConfig表apollo.portal.envs字段值为要开启的环境,这里是:dev,fat
PORTAL_DB: jdbc:mysql://10.0.0.8:3306/ApolloPortalDB?characterEncoding=utf8
PORTAL_DB_USER: root
PORTAL_DB_PWD: password
# 因为dev环境设置了ServerConfig表eureka.service.url字段值为localhost,所以需要在本地启动config和admin.
DEV_DB: jdbc:mysql://10.0.0.8:3306/ApolloConfigDBDev?characterEncoding=utf8
DEV_DB_USER: root
DEV_DB_PWD: password
# 配置fat的地址即可.
FAT_URL: http://10.0.1.99:8081
云上部署的情况和分布式部署大同小异,只是因为线下部署Portal需要做些微改变。
类似阿里云这样的可能是通过弹性IP访问云上的Apollo服务,那么需要配置数据库中的
ServerConfig
表eureka.service.url
字段值为弹性IP地址与端口,并在映射弹性IP的ECS上的docker实例启动时传入环境地址,即如果你要启动Pro环境服务,就将PRO_LB
设置为弹性IP的地址,且只用修改弹性IP端口映射的那台ECS的docker容器即可,其他已经运行中的服务可以不用改.弹性IP地址也可以用域名替换
内部只供client连接的config可以如下配置
version: '2'
services:
apollo-pro-config:
image: idoop/docker-apollo:latest
restart: always
network_mode: host
environment:
ONLY_CONFIG: "TRUE"
PRO_DB: jdbc:mysql://xxx.xxx.com:3306/ApolloConfigDBPro?characterEncoding=utf8
PRO_DB_USER: root
PRO_DB_PWD: password
# 如果有负载均衡器,则可以配置LB参数
# PRO_LB: 10.10.10.10
假设弹性IP为1.1.1.1
,需要对portal提供连接的那个docker实例可以如下配置:
version: '2'
services:
apollo-pro
image: idoop/docker-apollo:latest
restart: always
ports:
- "8083:8083"
- "8093:8093"
environment:
PRO_DB: jdbc:mysql://xxx.xxx.com:3306/ApolloConfigDB?characterEncoding=utf8
PRO_DB_USER: root
PRO_DB_PWD: password
# 此处LB设置必须为弹性IP,且同数据库中的eureka.service.url地址一样.
PRO_LB: 1.1.1.1
线下Portal
version: '2'
services:
apollo-portal
image: idoop/docker-apollo:latest
restart: always
network_mode: host
environment:
PORTAL_DB: jdbc:mysql://xxx.xxx.com:3306/ApolloPortalDB?characterEncoding=utf8
PORTAL_DB_USER: root
PORTAL_DB_PWD: password
PRO_URL: http://1.1.1.1:8083