docker安装apollo
一. 介绍
Apollo 最主要有三个工程,会用这三个工程进行部署
Portal
:是管理界面,对应有一个PortalDB
数据库,Portal
是用来管理有几个环境的,不管对接了几个环境,Portal
和PortalDB
数据库只需要部署一份Config
,Admin
:每个环境都有一个Config
和Admin
,对应每个环境都有一个自己的ConfigDB
库,如果用于生产,Config
和Admin
至少部署两套,才能保证服务的高可用
二. 部署
2.1. 下载源码
https://github.com/ctripcorp/apollo
2.2 创建数据库
1) ApolloPortalDB 数据库
如果有多个环境,要修改
ApolloPortalDB
库ServerConfig
表,不同环境之间用,
隔开,默认只有dev
2) ApolloConfigDB 数据库
如果每个环境只部署一套
config
和admin
,同时数据库也是在本机,所以默认的localhost
不用改,后面如果每个环境部署多台机器,localhost
需要修改成ip
地址
2.3 配置数据库连接信息和各环境meta service地址(只配置了dev)
2.4 打包,使用idea Terminal
16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea/apollo (master)
$ ./scripts/build.sh start
2.5 idea
登录Docker Hub
windows要先安装
Docker Toolbox
,并启动
16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea/apollo (master)
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (www19930327): www19930327
Password:
Login Succeeded
2.6 创建push.sh
脚本文件build
镜像并且push
到Docker Hub
#!/bin/sh
# 删除docker目录 .zip 文件
rm -rf ./apollo-portal/src/main/docker/*-github.zip ./apollo-configservice/src/main/docker/*-github.zip ./apollo-adminservice/src/main/docker/*-github.zip
# 拷贝jar包文件到docker目录(有Dockerfile,并且context must be a directory,就是必须将jar包和Dockerfile放到一个文件夹里面,不能指定一个文件)
cp ./apollo-portal/target/*-github.zip ./apollo-portal/src/main/docker/
cp ./apollo-configservice/target/*-github.zip ./apollo-configservice/src/main/docker/
cp ./apollo-adminservice/target/*-github.zip ./apollo-adminservice/src/main/docker/
# build 镜像(www19930327是用户名)
docker build -t www19930327/apollo-portal ./apollo-portal/src/main/docker/
docker build -t www19930327/apollo-configservice ./apollo-configservice/src/main/docker/
docker build -t www19930327/apollo-adminservice ./apollo-adminservice/src/main/docker/
# push到镜像仓库
docker push www19930327/apollo-portal
docker push www19930327/apollo-configservice
docker push www19930327/apollo-adminservice
www19930327
是Docker Hub
用户名
执行脚本
16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea/apollo (master)
$./scripts/push.sh start
push
成功
2.7 部署Apollo服务端
cent7
要安装docker
和docker-compose
,安装方法 https://blog.csdn.net/qq_38983728/article/details/85161510
通过docker compose
部署Apollo服务端,创建docker-compose.yaml
文件,内容如下:
version: "3"
services:
apollo-configservice: ## 容器服务名
container_name: apollo-configservice ## 容器名
network_mode: "host" # 容器有自己的内部网络和 ip 地址,使用指定网络方式为host,这个模式下创建出来的容器,直接使用容器宿主机的网络命名空间
#build: apollo-configservice/src/main/docker/ ## Dockerfile路径
image: www19930327/apollo-configservice ## 镜像名
ports:
- "8080:8080"
volumes:
- "/opt/logs/100003171:/opt/logs/100003171" ## 将/opt/logs/100003171目录挂载到宿主机的/opt/logs/100003171方便在宿主机上查看日志
apollo-adminservice:
container_name: apollo-adminservice
network_mode: "host"
#build: apollo-adminservice/src/main/docker/
image: www19930327/apollo-adminservice
ports:
- "8090:8090"
depends_on:
- apollo-configservice
volumes:
- "/opt/logs/100003172:/opt/logs/100003172"
apollo-portal:
container_name: apollo-portal
network_mode: "host"
#build: apollo-portal/src/main/docker/
image: www19930327/apollo-portal
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
volumes:
- "/opt/logs/100003173:/opt/logs/100003173"
执行docker-compose 部署(当前文件夹下要有docker-compose.yaml文件)
[root@wanfei ~]# cd i/apps/apollo/
[root@wanfei apollo]# ls
docker-compose.yaml
[root@wanfei apollo]# vi docker-compose.yaml
[root@wanfei apollo]# docker-compose up
# 下面是执行输出
......
Creating apollo-configservice ... done
Creating apollo-adminservice ... done
Creating apollo-portal ... done
Attaching to apollo-configservice, apollo-adminservice, apollo-portal
apollo-configservice | Sat May 11 12:59:00 CST 2019 ==== Starting ====
apollo-configservice | Started [53]
apollo-adminservice | Sat May 11 12:59:03 CST 2019 ==== Starting ====
apollo-adminservice | Started [53]
apollo-portal | Sat May 11 12:59:04 CST 2019 ==== Starting ====
apollo-portal | Started [53]
apollo-portal | Waiting for server startup..............
apollo-portal | Sat May 11 13:00:19 CST 2019 Server started in 70 seconds!
其他命令
# 也可以后台运行
[root@wanfei apollo]# docker-compose up -d
# 更新到最新镜像
[root@wanfei apollo]# docker-compose pull
# 停止镜像并删除
[root@wanfei apollo]# docker-compose down
# 指定 a.yaml 文件执行
[root@wanfei apollo]# docker-compose -f a.yaml up
2.8 部署成功
输入默认账号:
apollo
密码:admin
登录
三. 单个环境服务高可用配置
假设两台机器都部署dev
环境,怎么配置:
3.1 PortalDB库只有dev
3.2 ConfigDB配置指向两个config的ip
3.3 Portal要修改指向的环境
dev_meta=http://192.168.2.27:8080,http://192.168.2.28:8080