使用docker部署Apollo

本文主要介绍如何在通过docker部署Apollo,参考apollo官网: https://www.apolloconfig.com/#/zh/README

docker相关的初始化参见这里

1. 创建数据库

1.1 安装Mysql

参见这里

1.2 初始化Apollo

执行官方的db1的脚本:https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloportaldb.sql
再执行官方的db2的脚本:https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloconfigdb.sql

1.3 创建apollo的账号

1
2
3
4
5
6
create user 'admin123'@'%' identified by 'admin123';
ALTER USER 'admin123'@'%' IDENTIFIED WITH mysql_native_password BY 'admin123';
GRANT ALL PRIVILEGES ON ApolloConfigDB.* TO 'admin123'@'%';
GRANT ALL PRIVILEGES ON ApolloPortalDB.* TO 'admin123'@'%';
flush privileges;

2. 部署实例

2.1 拉取镜像

docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest

2.2 启动镜像

启动三个镜像

1
2
3
4
5
6
7
8
9
# SPRING_DATASOURCE_URL是你的mysql的url
# SPRING_DATASOURCE_USERNAME是你的mysql账号
# SPRING_DATASOURCE_PASSWORD是你的mysql地址

docker run -p 8080:8080 -e TZ=Asia/Shanghai -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址/ApolloConfigDB?characterEncoding=utf8" -e SPRING_DATASOURCE_USERNAME=账号 -e SPRING_DATASOURCE_PASSWORD=密码 -e EUREKA_INSTANCE_HOME_PAGE_URL="http://127.0.0.1:8080" -e EUREKA_INSTANCE_PREFER_IP_ADDRESS=false -e EUREKA_INSTANCE_IP_ADDRESS="192.168.1.11" -d --name apollo-configservice apolloconfig/apollo-configservice:latest
docker run -p 8090:8090 -e TZ=Asia/Shanghai -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址/ApolloConfigDB?characterEncoding=utf8" -e SPRING_DATASOURCE_USERNAME=账号 -e SPRING_DATASOURCE_PASSWORD=密码 -e EUREKA_INSTANCE_HOME_PAGE_URL="http://127.0.0.1:8090" -e EUREKA_INSTANCE_PREFER_IP_ADDRESS=false -e EUREKA_INSTANCE_IP_ADDRESS="192.168.1.11" -d --name apollo-adminservice apolloconfig/apollo-adminservice:latest

docker run -p 8070:8070 -e TZ=Asia/Shanghai -e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址/ApolloPortalDB?characterEncoding=utf8" -e SPRING_DATASOURCE_USERNAME=账号 -e SPRING_DATASOURCE_PASSWORD=密码 -e APOLLO_PORTAL_ENVS=dev -e DEV_META=http://apollo-config.alnk.top:8080 -d --name apollo-portal apolloconfig/apollo-portal:latest

在mysql里的ApolloConfigDB.ServerConfig表里,可以主动设置eureka.service.url的地址
官方文档里有个参数-v /tmp/logs=/opt/logs,也即是将容器里的logs目录挂载到物理机上,这里由于涉及到挂载的权限的问题,我们先不这么配置,如果你遇到了问题,可以通过:

docker logs <container_id>

很方便的就能看到容器里的各种问题。