搭建大型分布式服务(十五)Docker搭建开发环境安装Apollo

462 阅读1分钟

一、本文要点

本文将介绍利用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

加我一起交流学习!