簡體   English   中英

Spring Cloud Config Server無法從本地文件系統服務

[英]Spring Cloud Config Server Won't Serve from Local Filesystem

注:我讀過這個這個問題。 都沒有幫助。

我已經創建了一個Spring配置服務器Docker鏡像。 目的是能夠運行具有不同配置文件和搜索位置的多個容器。 這與上面的問題不同,在上面的問題中,屬性是從git加載的,或者是從啟動時配置服務器已知的類路徑位置加載的。 傳統上,我的配置服務器也部署在Tomcat中,而不使用重新包裝的啟動jar。

當我訪問http://<docker host>:8888/movie-service/native ,我沒有任何內容(見下文)。 我期望的內容在問題的末尾給出。

{"name":"movie-service","profiles":["native"],"label":"master","propertySources":[]}

我已經嘗試了幾乎所有在陽光下進行的操作,但無法使其正常工作。


配置服務器主:

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServer extends SpringBootServletInitializer {
    /* Check out the EnvironmentRepositoryConfiguration for details */
    public static void main(String[] args) {
        SpringApplication.run(ConfigServer.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(ConfigServer.class);
    }
}

配置服務器 application.yml

spring:
  cloud:
    config:
      enabled: true
      server:
        git:
          uri: ${CONFIG_LOCATION}
        native:
          searchLocations: ${CONFIG_LOCATION}
server:
  port: ${HTTP_PORT:8080}

配置服務器 bootstrap.yml

spring:
  application:
    name: config-service

eureka:
  instance:
    hostname: ${CONFIG_HOST:localhost}
    preferIpAddress: false
  client:
    registerWithEureka: ${REGISTER_WITH_DISCOVERY:true}
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${DISCOVERY_HOST:localhost}:${DISCOVERY_PORT:8761}/eureka/

Docker運行命令

docker run -it -p 8888:8888 \
-e CONFIG_HOST="$(echo $DOCKER_HOST | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')" \
-e HTTP_PORT=8888 \
-e CONFIG_LOCATION="file:///Users/<some path>/config/" \
-e REGISTER_WITH_DISCOVERY="false" \
-e SPRING_PROFILES_ACTIVE=native xxx

配置目錄

/Users/<some path>/config
--- movie-service.yml

movie-service.yml 內容

themoviedb:
  url: http://api.themoviedb.org

我自己想通了。 除非在運行時使用-v標志掛載文件系統目錄,否則Docker容器將無法訪問主機文件系統。

為了完整起見,這是完整的Docker run命令:

docker run -it -p 8888:8888 \
-e CONFIG_HOST="$(echo $DOCKER_HOST | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')" \
-e HTTP_PORT=8888 \
-e CONFIG_LOCATION="file:///Users/<some path>/config/" \
-e REGISTER_WITH_DISCOVERY="false" \
-e SPRING_PROFILES_ACTIVE=native \
-v "/Users/<some path>/config/:/Users/<some path>/config/" \
xxx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM