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三個容器

 

其它部署問題見:官方的解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM