2015-05-20 24 views
6

Używam Spring Cloud Eureka w mojej maszynie Docker VM. Mam do niej usługi, ale używają adresu IP z Docker VM, ale aby móc z nich prawidłowo korzystać, potrzebuję ich do korzystania z adresu IP, do którego mogę uzyskać dostęp spoza VM.Zarejestruj się w Eureka z Docker za pomocą niestandardowego IP

Na przykład w mojej maszynie wirtualnej rejestr korzystający z 172.x.x.x i i może uzyskać dostęp do interfejsu REST z przeglądarki przy użyciu 192.168.x.x.x. Potrzebuję ich zarejestrować jako 192.168.x.x.x.

W jaki sposób mogę nakazać mojej usłudze zarejestrowanie się na konkretnym adresie IP?

Odpowiedz

0

Można skonfigurować go w application.yml:

eureka: 
    instance: 
     ipAddress: 192.168.x.x 
+0

To jest w porządku, ale WH at if IP zmienia się dynamicznie za każdym razem? Chcę ujawnić adres IP hosta, a nie kontener. –

+0

Jeśli adres IP hosta zmienia się dynamicznie, przekazuj ten adres IP do kontenera w zmiennej środowiskowej i użyj tej zmiennej w konfiguracji Spring. – Tyutyutyu

+1

To jest pytanie, w jaki sposób przekazać adres IP hosta w kontenerze za pomocą usługi AWS BeansTalk? –

0

można używać zmiennych środowiskowych w konfiguracji eureka w application.yml

W poniższym przykładzie używam zmienne $HOST i $PORT do środowiska powiedz klientowi eureka, jakich wartości użyć. W moim przypadku te zmienne są ustalane przez Mesos/Marathon. Możesz znaleźć inne użyteczne zmienne ustawione przez Docker.

następujące prace dla mnie:

eureka: 
    client: 
    serviceUrl: 
     defaultZone: http://discovery.marathon.mesos:31444/eureka/ 
    registerWithEureka: true 
    fetchRegistry: true 
    instance: 
    appname: configserver 
    health-check-url: /health 
    prefer-ip-address: true 
    ip-address: "${HOST}" # mesos/marathon populates this in the environment 
    non-secure-port: "${PORT}" # mesos/marathon populates this in the environment 
2

Oba poprzednie odpowiedzi są poprawne, ale zrobię kopiowaniem wklejanie łatwiejsze.

Co należy zrobić, to dodać zmienną środowiskową z hostem ip podczas uruchamiania kontenera, aw pliku Spring Boot application.yml uwzględnić tę zmienną.

application.yml

eureka: 
    instance: 
    # Necessary for Docker as it doesn't have DNS entries 
    prefer-ip-address: true 
    # Necessary for Docker otherwise you will get 127.0.0.x ip 
    ip-address: "${HOST}" 
    client: 
    serviceUrl: 
     # Location of your eureka server 
     defaultZone: http://192.168.0.107:8761/eureka/ 

Biegając z Döcker

docker run -p <port>:<port> -e HOST='192.168.0.106' <image name> 

działa z docker-komponować

my_service: 
    image: image_name 
    environment: 
    - HOST=192.168.0.106 
    ports: 
    - your_port:container_port 
Powiązane problemy