Docker容器化部署config-server无法直接访问
Docker容器化部署config-server無法直接訪問
- 1. 本機ip啟動方式:
- 2. Docker容器啟動
- 1)問題
- 2)解決辦法
- - 本機啟動
- - 服務(wù)器啟動倆種方式
- 3. dockerfile 示例
- 4. JVM參數(shù)可配置
- 5. 排查問題
- 參考:
解決辦法:spring.cloud.config.uri
1. 本機ip啟動方式:
使用都是本地服務(wù)時,未使用docker方式部署。
spring:application:name: test-servicecloud:config:name: common-config,database-config,hbase-config,test-serviceprofile: devdiscovery:enabled: trueservice-id: config-server
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}client:serviceUrl:
# defaultZone: http://xx.xx.xx.xx:xx/eureka/,http://xx.xx.xx.xx:xx/eureka/defaultZone: ${EUREKA_SERVER}
2. Docker容器啟動
1)問題
Docker容器化部署之后,服務(wù)器服務(wù)對外的ipPort和Eureka里獲取到的容器里真實的ipPort是不一致的;
訪問服務(wù)時只能通過服務(wù)對外的ipPort訪問,直接訪問eureka里的ipPort會報錯
2)解決辦法
- 本機啟動
spring:application:name: test-servicecloud:config:name: common-config,db-config,hbase-config,hdfs-config,test-serviceprofile: devuri: ${CONFIG_SERVER} #docker容器部署config-server對外的ipPort#uri: http://xx.xx.xx.xx:xx/
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}metadata-map:zone: 1234client:serviceUrl:
# defaultZone: http://xx.xx.xx.xx:xx/eureka/,http://xx.xx.xx.xx:xx/eureka/defaultZone: ${EUREKA_SERVER}
metadata-map: zone 與serviceUrl同時存在時,默認會優(yōu)先取同一個metadata-map: zone 內(nèi)的服務(wù),所以本地調(diào)試時可以把本地服務(wù)的eureka.instance.metadata-map.zone設(shè)置為 1234等,以避免影響正常的服務(wù)接口調(diào)用
- 服務(wù)器啟動倆種方式
方式1
spring:application:name: test-servicecloud:config:name: common-config,db-config,hbase-config,hdfs-config,test-serviceprofile: devuri: ${CONFIG_SERVER}
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}client:serviceUrl:defaultZone: ${EUREKA_SERVER}
方式2
spring:application:name: test-servicecloud:config:name: common-config,database-config,hbase-config,test-serviceprofile: devdiscovery:enabled: trueservice-id: config-server
eureka:instance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}client:serviceUrl:defaultZone: ${EUREKA_SERVER}#defaultZone: http://xx.xx.xx.xx:xx/eureka/,http://xx.xx.xx.xx:xx/eureka/
3. dockerfile 示例
FROM 基礎(chǔ)鏡像
MAINTAINNER 維護者 姓名郵箱
ADD 添加jar包、bootstrap.xml
ENV 設(shè)置日期時區(qū)
ENTRYPOINT 用于設(shè)定容器啟動時第一個運行的命令及其參數(shù)。
FROM registry.xxx.com/base/java:1.8
MAINTAINER xxx "xxx@qq.com"
ADD target/xxx-xxx-0.0.1.jar xxx-xxx-0.0.1.jar
ADD src/main/resources/bootstrap.yml bootstrap.yml
ENV lang en_Us.utf8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT java ${JVM_PARAMS:=-Xms4g –Xmx4g} -jar xxx-xxx-0.0.1.jar
4. JVM參數(shù)可配置
-
方式一
dockfile 中直接啟動服務(wù)的如下配置即可;
環(huán)境變量 JVM_PARAMS= 配置 例如:-Xms8g –Xmx8g
-Xmx 最大內(nèi)存 -Xms最小內(nèi)存
ENTRYPOINT java ${JVM_PARAMS:=-Xms4g –Xmx4g} –jar xxxxxx.jar 注: -Xms4g –Xmx4g 為默認值
-
方式二
dockfile 中調(diào)用shell 腳本啟動的
ENTRYPOINT ./shell.sh “${JVM_PARAMS:=-Xms4g –Xmx4g}” 注:雙引號必須的
shell.sh如下
java $1 -jar test-service-0.0.1.jar
5. 排查問題
查看服務(wù)進程id: ps aux | grep java
查看分配內(nèi)存及使用情況: jmap -heap pid
查看占用內(nèi)存: top (尋找對應(yīng)進程的)
參考:
- https://www.jianshu.com/p/1706831ee897
- metadata-map: zone 與serviceUrl注冊后先后使用,默認會優(yōu)先取同一個metadata-map: zone 內(nèi)的服務(wù)
總結(jié)
以上是生活随笔為你收集整理的Docker容器化部署config-server无法直接访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Python,OpenCV寻找图像中
- 下一篇: 使用Python制作酷炫的二维码