Centos中使用Docker部署Apollo
采用微服务开发框架开发项目时会涉及多个系统,如果要更改配置参数需要在多个系统间逐一更改,比较费时,而且容易遗漏,效率低下,次问题可以采用Apollo配置中心的方式解决,下面将介绍如何配置:
准备环境:本地环境win7/win10,docker所在服务器centos7
第一步
下载Apollo到本地并解压到磁盘,URL:https://github.com/ctripcorp/apollo
(linux: wget https://github.com/ctripcorp/apollo/archive/master.zip)
第二步
编辑解压后的docker-compose.yml文件,内容如下:
version: "3" ##版本信息
services:
apollo-configservice: ##容器服务名
container_name: apollo-configservice ##容器名
network_mode: "host" ##绑定主机网络模式
build: apollo-configservice/src/main/docker/ ##Dockerfile路径
image: apollo-configservice
ports:
- "8081:8080" ##映射主机端口,8080为Java常用端口,避免将来冲突此处采用8081,apollo-configservice默认端口为8080
volumes:
- "/tmp/logs/100003171:/opt/logs/100003171" ##将docker容器输出的日志目录绑定到主机的tmp文件夹下
environment:
- spring_datasource_url=jdbc:mysql://192.168.123.144:3306/ApolloConfigDB?characterEncoding=utf8 ##mysql连接字符串,该IP为mysql服务所在机器, 下面类同
- spring_datasource_username=root
- spring_datasource_password=xxx
apollo-adminservice:
container_name: apollo-adminservice
network_mode: "host"
build: apollo-adminservice/src/main/docker/
image: apollo-adminservice
ports:
- "8090:8090"
depends_on:
- apollo-configservice
volumes:
- "/tmp/logs/100003172:/opt/logs/100003172"
environment:
- spring_datasource_url=jdbc:mysql://192.168.123.144:3306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=xxx
apollo-portal:
container_name: apollo-portal
network_mode: "host"
build: apollo-portal/src/main/docker/
image: apollo-portal
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
volumes:
- "/tmp/logs/100003173:/opt/logs/100003173"
environment:
- spring_datasource_url=jdbc:mysql://192.168.123.144:3306/ApolloPortalDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=xxx
注意两点:
1. 我这里将本机的8081,8090,8070分别映射到apollo三个组件的不同端口,各位可以根据需要进行修改
2. mysql连接字符串我这里采用了外网IP的方式,通过固定IP加端口指定,root/xxx为连接账户信息
第三步
下载apollo的三个组件(目前最新为1.4.0),Url: https://github.com/ctripcorp/apollo/releases
l apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端
l apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka
l apollo-portal:提供Web界面供用户管理配置
查找对应apollo-master下对应组件名的文件夹,进入在第二步的docker-compose文件中,build节点指定的Dockfile路径,将下载好的组件拷贝到该目录,如下
编辑该文件夹内的Dockerfile文件,修改环境变量VERSION:
改前:
改后(简化操作,我这里直接使用了下载组件去除名称后的版本号):
参照该操作,依次将三个组件操作完毕
第四步
1. 安装mysql5.7.19,下载地址:https://downloads.mysql.com/archives/community/
修改mysql配置参数(windows环境下my.ini文件,linux为my.cnf)
注:我这里为了简化操作直接在本地windows环境上操作,安装后没有在安装目录下找到配置参数文件,所以需要手动创建(如忘记安装目录可以在doc窗口执行命令查看: mysql --help,Default options are read from the following files in the given order)
进入安装目录,新建my.ini,内容如下
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
# 不限制IP,允许远程访问
bind-address = 0.0.0.0
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录,自行修改
basedir=E:\Program Files (x86)\MySQL\MySQL Server 5.7
# 设置mysql数据库的数据的存放目录,自行修改
datadir=E:\Program Files (x86)\MySQL\MySQL Server 5.7\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#开启查询缓存
explicit_defaults_for_timestamp=true
#跳过数据库权限验证,可选
skip-grant-tables
2. 安装HeildiSQL,完成后打开并连接mysql数据库,用户root,密码空,选中mysql库执行下面的代码
-- 修改root用户密码
update user set authentication_string = password('xxx'), password_expired = 'N', password_last_changed = now() where user = 'root';
-- 授权root用户远程登录,%表示不限IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxx';
-- 刷新权限,一定要执行
flush privileges;
3. 重启mysql服务
第五步
使用工具HeildiSQL登录mysql,导入脚本对apollo数据库进行初始化,脚本目录:apollo-master\scripts\docker-quick-start\sql
导入完成后可以在数据库列表看到下图效果:
第六步
使用xftp工具将前面第一步、第二步、第三步准备好的apollo-master文件夹内所有文件都目标linux服务器,我这里采用centos7,上传到了桌面
在该文件夹下右键鼠标,新建终端,运行下面的脚本(建议管理员权限)
docker-compose up -d
看到上图内容时表示执行成功,然后使用下面的脚本查看容器状态
docker ps -a
留意apollo开头的容器状态,看到up表示成功了,如果是exited之类需要进入前面在docker-compose.yml文件夹指定的日志目录下查看异常信息,我的路径是:
第七步
进入Apollo的后台管理页面,账户apollo/admin
检查Eureka
第八步
1. 修改apollo-portal容器的环境变量
进入容器: docker exec -it apollo-portal /bin/bash
编辑环境变量apollo-env.properties
保存完毕后,Ctrl+D退出当前容器
2. 修改数据库ApolloConfigDB的serverconfig表中的eureka.service.url所在数据行对应的value列值
http://localhost:8081/eureka/ --端口见前面docker-compose.yml文件配置
3. 修改完成后,重启docker中的apollo三个容器
其它部署问题见:官方的解决方案
Centos中使用Docker部署Apollo的更多相关文章
- Centos 7使用docker部署LAMP搭建wordpress博客系统
0.简要概述 LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案.docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级.可移植的容器. ...
- CentOS中利用Docker安装RabbitMQ
CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...
- CentOS中利用Docker安装Redis
CentOS中利用Docker安装Redis 1.拉取镜像 #docker pull redis:4.0.10 2.加载镜像 #docker run -p 6379:6379 --name test- ...
- CentOS下利用Docker部署Surging
原文:CentOS下利用Docker部署Surging 1. 安装Centos, 配置固定ip配置文件地址vi /etc/sysconfig/network-scripts/ifcfg-ens33`` ...
- Docker学习笔记之-在CentOS中安装Docker
上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...
- Docker部署Apollo配置中心
1.Apollot简述 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于 ...
- CentOS 中利用docker安装MySQL
1.前提条件 centos7 且内核版本高于3.10, 可通过命令: uname -r 查看内核版本 2.利用yum 安装docker 安装一些必要的系统工具: sudo yum install -y ...
- CentOS利用Nginx+Docker部署.netcore应用
安装docker 官方文档https://docs.docker.com/engine/installation/linux/docker-ce/centos/ [root@sn ~]# yum re ...
- Centos下使用Docker部署asp.net core项目
本文讲述 CentOS 系统 Docker 中部署 asp.net core开源项目 abp 的过程 步骤 1. 拉取 asp.net core 基础镜像 docker pull microsoft/ ...
随机推荐
- share point 查询文档库 过滤 文档名称和上传时间
SPQuery query = new SPQuery(); CAMLBuilder.WhereBuilder whereBuilder = null; pageCount = ; if (!stri ...
- C的随机数用法
rand() #include <stdio.h> #include <stdlib.h> int main() { ; i < ; i++) { printf(&quo ...
- 【leetcode】1217. Play with Chips
题目如下: There are some chips, and the i-th chip is at position chips[i]. You can perform any of the tw ...
- 【shell】awk的next用法
awk的next相当于循环中continue的作用,next后面的语句将不再执行. 例如,下面的例子中,包含数字3的那行的print语句没有被执行. [root]$ seq | awk '{print ...
- ForkJoinPool及并行流解析
parallelStream原理. parallelStream是并行流,依赖jdk1.7出现的Fork/Join框架. Fork/Join框架的核心是工作窃取(work-stealing)算法.那么 ...
- Composite UI Application Block(CAB)
序言 资料 https://www.cnblogs.com/lglruirui/archive/2010/06/21/1761737.html?tdsourcetag=s_pcqq_aiomsg ht ...
- [Noip模拟题]宠物之战senso
Description 众所周知,moreD的宠物已经被moreD奴役得体无完肤.这只宠物实在忍无可忍,把自己每天走魔法树的经历告诉了 自己的宠物.同时他还说明了自己爬树是多么地慢,以至于moreD每 ...
- FJWC2017&FJOI2017一试 游记
day1 早上是以前泉州七中的杨国烨讲课.(据说当时看新闻说是一对双胞胎一起上thu的其中一个)课题是图论/网络流. 下午第一道一开始推出来了一个之和面积有关的式子,然后觉得可以容斥一发,觉得 ...
- Selenium 上手:Selenium扫盲区
Selenium 自述Selenium 是由Jason Huggins软件工程师编写的一个开源的浏览器自动化测试框架.主要用于测试自动化Web UI应用程序. Selenium 工作原理通过编程语言( ...
- [LeetCode]-DataBase-Trips and Users
The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...