溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker如何部署apollo

發(fā)布時(shí)間:2021-08-21 10:02:04 來(lái)源:億速云 閱讀:146 作者:小新 欄目:服務(wù)器

這篇文章主要介紹了docker如何部署apollo,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1、前言

apollo的詳細(xì)介紹我就不在這里多說(shuō)了,官網(wǎng)上https://github.com/ctripcorp/apollo 已經(jīng)說(shuō)的非常明白了,我就不在這班門弄斧了,還不了解的小伙伴可以去官網(wǎng)上去了解下。

注意: 我是直接部署開始的,有關(guān)數(shù)據(jù)庫(kù)的創(chuàng)建和初始化自己根據(jù)官網(wǎng)搞定。

2、源碼編譯

2.1 網(wǎng)絡(luò)策略

網(wǎng)絡(luò)策略直接使用官網(wǎng)描述的就可以,具體就是分別編輯apollo-configservice/src/main/resources/application.yml和apollo-adminservice/src/main/resources/application.yml,然后把需要忽略的網(wǎng)卡加進(jìn)去。

如下面這個(gè)例子就是對(duì)于apollo-configservice,把docker0和veth.*的網(wǎng)卡在注冊(cè)到Eureka時(shí)忽略掉。

spring:
   application:
     name: apollo-configservice
   profiles:
    active: ${apollo_profile}
   cloud:
    inetutils:
     ignoredInterfaces:
      - docker0
      - veth.*

注意,對(duì)于application.yml修改時(shí)要小心,千萬(wàn)不要把其它信息改錯(cuò)了,如spring.application.name等。

2.2 動(dòng)態(tài)指定注冊(cè)網(wǎng)絡(luò)

在使用docker搭建集群是, adminservice、configservice都需要向注冊(cè)中心注冊(cè)地址,如果不指定注冊(cè)IP,注冊(cè)的是docker內(nèi)部的網(wǎng)絡(luò),導(dǎo)致網(wǎng)絡(luò)不通。

在apollo-configservice/src/main/resources/bootstrap.yml和apollo-adminservice/src/main/resources/bootstrap.yml添加如下代碼。

eureka:
 instance:
    ip-address: ${eureka.instance.ip-address}

這個(gè)地方取值從環(huán)境變量中取,容器外部來(lái)配置這樣給部署帶來(lái)了更大的靈活性。

到這源碼的修改已經(jīng)完成,直接build打包就可以了,拿到對(duì)應(yīng)三個(gè)服務(wù)的zip包。

如果懶得修改,也可以直接從https://github.com/yuelicn/apollo.拉下我修改好的源碼直接打包即可。

3、dockerfile編寫

Apollo 的Dockerfile非常簡(jiǎn)單, 直接使用官方提供的即可。下方是adminservice示例。

# Dockerfile for apollo-adminservice
# Build with:
# docker build -t apollo-adminservice .
# Run with:
# docker run -p 8090:8090 -d --name apollo-adminservice apollo-adminservice

FROM java:8-jre
MAINTAINER Louis

ENV VERSION 1.5.0

RUN apt-get install unzip

ADD apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip

RUN unzip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip -d /apollo-adminservice \
  && rm -rf /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip \
  && sed -i '$d' /apollo-adminservice/scripts/startup.sh \
  && echo "tail -f /dev/null" >> /apollo-adminservice/scripts/startup.sh

EXPOSE 8090

CMD ["/apollo-adminservice/scripts/startup.sh"]

需要注意的,

1: version 需要根據(jù)自己打包的版本來(lái)修改
2: ADD zip包時(shí)修改你路徑

三個(gè)服務(wù)的dockerfile文件基本相同,我就不在這多說(shuō)了。需要的小伙伴直接從https://github.com/yuelicn/docker-apollo就可以了。

4 docker-compose 的編寫

4.1 apollo-configservice-compose.yml

version: "3"
services:
 apollo-configservice:
  container_name: apollo-configservice
  build: apollo-configservice/
  image: apollo-configservice
  ports:
   - 8080:8080
  volumes:
   - "/docker/apollo/logs/100003171:/opt/logs/100003171"
  environment:
   - spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloConfigDB_TEST?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=mysql2019*
   - eureka.instance.ip-address=172.11.11.11

  restart: always

注意事項(xiàng),

1: build: 中指定你Dockerfile文件的位置
2: environment 環(huán)境變量中指定你數(shù)據(jù)庫(kù)的配置信息
3: eureka.instance.ip-address 指定注冊(cè)到eureka地址,這個(gè)最好使用你物理機(jī)的內(nèi)網(wǎng)地址。

特別注意: 啟動(dòng)前最好先修改ApolloConfigDB數(shù)據(jù)庫(kù)中 ServerConfig中的eureka.service.url值,改為具體的IP
啟動(dòng):

docker-compose -f apollo-configservice-compose.yml up --build -d

4.2 apollo-adminservice-compose.yml

apollo-adminservice-compose.yml的內(nèi)容基本和apollo-configservice-compose.yml相同,在這我就不一一說(shuō)明了。

4.3 apollo-portal-compose.yml

version: "3"
services:
 apollo-portal:
  container_name: apollo-portal
  build: apollo-portal/
  image: apollo-portal
  ports:
   - 8070:8070
  volumes:
   - "/docker/apollo/logs/100003173:/opt/logs/100003173"
   - "/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties"
  environment:
   - spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloPortalDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=mysql2019*
   

  restart: always

注意事項(xiàng):
1: 需要注意的和上述configservice基本相同
2: 特別需要注意的事項(xiàng) 重要!重要!重要!重要!重要!volumes: 中我將
apollo-env.properties文件映射到容器外面了,將自己的apollo-env.properties文件配置后將自己的掛載地址填上,冒號(hào)前的地址“/apollo-portal/config/apollo-env.properties”修改成自己的。必須在啟動(dòng)前將此配置文件指定好。
啟動(dòng)

docker-compose -f apollo-configservice-compose.yml up --build -d

4.3.1 apollo-env.properties

local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

將自己的meta地址配置上, 沒有的可以直接刪除。有不明白的可以去官網(wǎng)上了解,環(huán)境配置完后修改對(duì)應(yīng)的數(shù)據(jù)庫(kù)中ApolloPortalDB.ServerConfig中apollo.portal.envs 值,填上你的配置的環(huán)境。否則我們?cè)趐ortal管理頁(yè)面只能看到默認(rèn)dev環(huán)境。

5 完整的docker-compose.yml

如果嫌棄一個(gè)個(gè)啟動(dòng)麻煩也以使用一個(gè)完整的compose來(lái)啟動(dòng)。

version: "3"
services:
 apollo-configservice:
  container_name: apollo-configservice
  build: apollo-configservice/
  image: apollo-configservice
  ports:
   - 8080:8080
  volumes:
   - "/docker/apollo/logs/100003171:/opt/logs/100003171"
  environment:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=Tusdao@xx*
   - eureka.instance.ip-address=172.11.11.11
  restart: always

 apollo-adminservice:
  container_name: apollo-adminservice
  build: apollo-adminservice/
  image: apollo-adminservice
  ports:
   - 8090:8090
  volumes:
   - "/docker/apollo/logs/100003172:/opt/logs/100003172"
  environment:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=Tusdao@xx*
   - eureka.instance.ip-address=172.11.11.11
  depends_on:
   - apollo-configservice

  restart: always

 apollo-portal:
  container_name: apollo-portal
  build: apollo-portal/
  image: apollo-portal
  ports:
   - 8070:8070
  volumes:
   - "/docker/apollo/logs/100003173:/opt/logs/100003173"
   - "/Apollo/docker-image/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties"
  environment:
   - spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloPortalDB?characterEncoding=utf8
   - spring_datasource_username=root
   - spring_datasource_password=Tusdao@xx*
  depends_on:
   - apollo-adminservice
  restart: always

注意: 需要修改的地方和單個(gè)基本相同,我在這就不嘮叨了。

到這docker部署Apoll基本搞定,如有小伙伴需要完整的docker部署文件請(qǐng)移步https://github.com/yuelicn/docker-apollo

6集群的搭建

Apollo集群的搭建非常簡(jiǎn)單,只需要修改兩個(gè)地方就可以了,我們就以正式環(huán)境(pro)來(lái)說(shuō)明,
在pro環(huán)境我們搭建了兩套adminservice、configservice,數(shù)據(jù)庫(kù)都是同一個(gè)ApolloConfigDB,

1:將ServerConfig中的eureka.service.url值eureka連接信息兩個(gè)都寫上用逗號(hào)分隔:http://IP-1:port/eureka,http://IP-2:port/eureka

2:修改apollo-env.properties中對(duì)應(yīng)環(huán)境的連接信息如: pro.meta=http://IP-1:port,http://IP-2:port 地址用逗號(hào)分隔就可以了。

之后重啟服務(wù)就搞定了。

最后強(qiáng)調(diào),adminservice、configservice 需要每個(gè)環(huán)境單獨(dú)部署,包括數(shù)據(jù)庫(kù)。portal只需要部署一套就可以了。

OK! 完成,上述是指?jìng)€(gè)人搭建記錄,希望對(duì)你有幫助,如果不對(duì)的地方歡迎指正。

修改后的源碼地址:https://github.com/yuelicn/apollo

整理好的Docker-Apollo:https://github.com/yuelicn/docker-apollo

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“docker如何部署apollo”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI