Apollo配置中心部署到Docker
- 2019 年 12 月 7 日
- 筆記
使用apollo最新的1.1版本:https://github.com/ctripcorp/apollo docker部署時候會遇到註冊中心ip的問題,解決如下2種方法: 1.直接指定要註冊的IP,可以修改startup.sh,通過JVM System Property在運行時傳入,如-Deureka.instance.ip-address=${指定的IP},或者也可以修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置
eureka: instance: ip-address: ${指定的IP}
2.部署的時候,apollo-configservice和apollo-adminservice需要把自己的IP和埠註冊到Meta Server(apollo-configservice本身)。 Apollo客戶端和Portal會從Meta Server獲取服務的地址(IP+埠),然後通過服務地址直接訪問。 所以如果實際部署的機器有多塊網卡(如docker),或者存在某些網卡的IP是Apollo客戶端和Portal無法訪問的(如網路安全限制),那麼我們就需要在apollo-configservice和apollo-adminservice中做相關限制以避免Eureka將這些網卡的IP註冊到Meta Server。 如下面這個例子就是對於apollo-configservice,把docker0和veth.*的網卡在註冊到Eureka時忽略掉。
spring: application: name: apollo-configservice profiles: active: ${apollo_profile} cloud: inetutils: ignoredInterfaces: - docker0 - veth.*
注意,對於application.yml修改時要小心,千萬不要把其它資訊改錯了,如spring.application.name等。 修改apolloscriptsbuild.bat中資料庫地址和dev_meta地址 然後運行bat文件編譯 新建三個目錄文件,分別將上一步驟在target目錄中生成的.jar、.github.zip文件上傳至伺服器中 以及 srcmaindocker 目錄中的Dockerfile文件

運行docker-compose-apollo.yml文件
docker-compose -f docker-compose-apollo.yml up
docker-compose-apollo.yml內容如下
version: "3" services: apollo-configservice: ##容器服務名 container_name: apollo-configservice ##容器名 build: apollo-configservice/ ##Dockerfile路徑 image: apollo-configservice:1.1.0 ##鏡像名 network_mode: host ##網路設置 ports: - "8080:8080" volumes: - "/docker/apollo/logs/100003171:/opt/logs/100003171" ##將/opt/logs/100003171目錄掛載到宿主機的/docker/apollo/logs/100003171方便在宿主機上查看日誌 environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password= apollo-adminservice: container_name: apollo-adminservice build: apollo-adminservice/ image: apollo-adminservice:1.1.0 network_mode: host #net: "host" ports: - "8090:8090" depends_on: - apollo-configservice volumes: - "/docker/apollo/logs/100003172:/opt/logs/100003172" environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password= apollo-portal: container_name: apollo-portal build: apollo-portal/ image: apollo-portal:1.1.0 network_mode: host #net: "host" ports: - "8070:8070" depends_on: - apollo-adminservice volumes: - "/docker/apollo/logs/100003173:/opt/logs/100003173" environment: - spring_datasource_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 - spring_datasource_username=apollo - spring_datasource_password=
啟動之後,不會馬上就有,輸入top命令查看 這時候會看到有java 佔用cpu 超過 100% 當運行完了就會顯示正常(大概5分鐘左右)。這時候輸入 伺服器ip:8070就會看到起好的項目