2014-11-25 3 views
6

Я играл вокруг с проектом Spring Cloud на GitHub, расположенный здесь: https://github.com/spring-cloud/spring-cloud-configSpring Облака конфигурация сервер не работает с локальными свойствами файла

Однако я бег в некоторых проблемы, получить его читать локальные свойства файла вместо вытягивания свойств из github. Кажется, что весна игнорирует локальный файл, даже когда я удаляю все ссылки на github. Здесь есть аналогичный вопрос: Spring-Cloud configuration server ignores configuration properties file

Но я еще не нашел хороших ответов. Мне интересно, может ли кто-нибудь указать мне пример этого? Я хотел бы установить свои свойства локально, а не использовать репозиторий git любого типа. Я предполагаю, что кто-то столкнулся с этим раньше, и, если есть какой-то пример, я бы очень хотел его увидеть, чтобы я мог двигаться в правильном направлении.

+2

ли вы попробуйте запустить его с 'spring.profiles.active = native' (должен работать с 1.0.0.M3 или снимкам)? –

+0

Да, я попытался добавить это, но мне не повезло. – user3270760

+0

Он работает для меня после добавления spring.profiles.active = native в файл application.properties – wmfairuz

ответ

8

Весь мой код здесь https://github.com/spencergibb/communityanswers/tree/so27131143

SRC/главная/Java/Application.java

@Configuration 
@EnableAutoConfiguration 
@EnableConfigServer 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

SRC/основные/ресурсы/application.yml

spring: 
    application: 
    name: myconfigserver 
    profiles: 
    active: native 

my: 
    property: myvalue 

SRC/главная/ресурсы/myapp.yml

my: 
    otherprop: myotherval 

Чтобы получить свойства для приложения с именем myapp, выполните следующие действия.

curl http://localhost:8080/myapp/default

{ 
    "name": "default", 
    "label": "master", 
    "propertySources": [ 
      { 
       "name": "applicationConfig: [classpath:/myapp.yml]", 
       "source": { 
        "my.otherprop": "myotherval" 
       } 
      }, 
      { 
       "name": "applicationConfig: [classpath:/application.yml]", 
       "source": { 
        "spring.application.name": "myconfigserver", 
        "spring.profiles.active": "native", 
        "my.property": "myvalue" 
       } 
      } 
    ] 
} 
+0

Это действительно круто. Он отлично работает! Спасибо! Мой следующий вопрос: получить конкретное значение, можете ли вы указать его в файле application.yml или в каком-либо файле свойств следующим образом: 'foo = bar', а затем получить значение' foo', используя некоторую команду curl? Как 'curl http: // localhost: 8080/myapp/foo'? – user3270760

+1

В настоящее время отдельные значения недоступны через http api. Если вы используете 'spring-cloud-config-client' в своей среде приложений Spring. Эти значения доступны в виде документов YAML или Java Properties через http: // localhost: 8080/myapp-default.yml' и 'http: // localhost: 8080/myapp-default.properties' соответственно. – spencergibb

0

Использование spring.profiles.active = native - это то, что предлагает документация Spring, но я не мог заставить ее работать. Мой application.properties файл

server.port=8888 
spring.cloud.config.profiles=native 

но ответа от URL

http://localhost:8888/config-server/env 

является

{"name":"env","label":"master","propertySources":[{"name":"https://github.com/spring-cloud-samples/config-repo/application.yml","source":{"info.url":"https://github.com/spring-cloud-samples","info.description":"Spring Cloud Samples"}}]} 

, который указывает на то, что родной профиль был проигнорирован, и сервер все еще рассматривает GitHub как собственность источник.

Небольшой дополнительной проблемой, с которой я столкнулся, является порт по умолчанию для службы конфигурации. Согласно документации Sprint Cloud Config, она должна быть 8888. Если я удалю server.port = 8888 из моих приложений .properties, то сервер конфигурации запускается на порт 8080, который является портом Spring Spring по умолчанию, но не должен использоваться один сервер конфигурации.

+0

Вы нашли решение на этом? Порт и собственный профиль. –

+0

вы можете установить spring.profiles.active = native в bootstrap.properties и поместить его в src/main/resources или когда вы начнете загрузку весны, вы можете сделать это вот так: mvn spring-boot: run -Drun.profiles = native теперь дайте ему попробовать ... –

1

Я был в состоянии получить его работу с местным репо и начальной загрузки конфигурации:

java -jar spring-cloud-config-server-1.0.0.M3-exec.jar --spring.config.name=bootstrap 

Файл bootstrap.yml помещается в ./config/ папку.

server: 
    port: 8080 
spring: 
    config: 
    name: cfg_server 
    cloud: 
    config: 
     server: 
     git: 
     uri: /home/us/config_repo 
     searchPaths: pmsvc,shpsvc 
1

У меня была такая же проблема при запуске сервера конфигурации в среде Mac OS. Этого не произошло в Linux или Windows.

Я имел нативную набор свойств в файле bootstrap.yml так:

spring: 
    profiles: 
    active: native 

Наконец, как он работал для меня на макинтош был передать активный профиль в файл банку, как это.

java -jar config-server.jar --spring.profiles.active=native 

Я до сих пор не знаю, почему в Mac OS по-разному ведет себя по-другому.

2

Я могу прочитать конфигурацию для apple-service (Test Micro Service) с использованием Spring config server.

Пример application.yml яровой применения конфигурации

spring: 
    profiles: 
     active: native 
    cloud: 
     config: 
      server: 
       native: 
        searchLocations: classpath:config/ 
server: 
    port: 8888 


endpoints: 
    restart: 
     enabled: true 

Положите .properties или .yml файлы в ЦСИ \ основные \ Resources \ папку конфигурации. Убедитесь, что имя этого файла должно соответствовать spring.application.name вашего микросервиса.

Например, если spring.application.name = яблочно-служба тогда файл свойств должен быть apple-service.properties в ЦСИ \ основные \ ресурсы \ Config папки.

Пример bootstrap.yml яблочного-службы:

spring: 
    application: 
    name: apple-service 

cloud: 
    config: 
    uri: http://localhost:8888 
1

сервер конфигурации будет читать локальные файлы свойств, если application.properties конфигурационного сервера содержит:

spring.profiles.active=native 
**spring.cloud.config.server.native.searchLocations=file:/source/tmp** 

в /source/tmp каталоге, вы храните локальный файл свойств для клиента, например:

http://localhost:8888/a-bootiful-client/default 

вы получите:

{"name":"a-bootiful-client","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"file:/source/tmp/a-bootiful-client.properties","source":{"message":"Kim"}}]} 
+0

Почему счет «-1»? –

+0

Это работает для меня. Спасибо –

Смежные вопросы