2017-09-05 4 views
0

Ich versuche, meine JHipster Microservices und Registrierung in Docker-Container auf meinem OS X-Entwicklungsmaschine bereitzustellen.JHipster-Anwendung in Docker-Container kann nicht auf Host-Netzwerk zugegriffen werden, kann nicht mit anderen Containern auf Nicht-Host-Netzwerk kommunizieren

ich die Registrierung mit mehr bereitstellen oder weniger der Standard Docker-compose Konfiguration JHipster aus der Box sieht vor:

version: '2' 
services: 
    jhipster-registry: 
     image: jhipster/jhipster-registry:v3.1.0 
     volumes: 
      - ./central-server-config:/central-config 
     # When run with the "dev" Spring profile, the JHipster Registry will 
     # read the config from the local filesystem (central-server-config directory) 
     # When run with the "prod" Spring profile, it will read the configuration from a Git repository 
     # See https://jhipster.github.io/microservices-architecture/#registry_app_configuration 
     environment: 
      - SPRING_PROFILES_ACTIVE=dev,native 
      - SECURITY_USER_PASSWORD=admin 
      - SPRING_CLOUD_CONFIG_SERVER_NATIVE_SEARCH_LOCATIONS=file:./central-config/localhost-config/ 
      # - GIT_URI=https://github.com/jhipster/jhipster-registry/ 
      # - GIT_SEARCH_PATHS=central-config 
     ports: 
      - 8761:8761 

Wenn ich meine Microservices bereitstellen docker run verwenden, geschieht jedoch eines von zwei Dingen:

Wenn ich den Port veröffentliche, möchte ich den Microservice bei der Verwendung von -p 8080:8080 verfügbar machen, damit ich über den Browser darauf zugreifen kann, kann ich es erreichen, aber der Microservice kann die Registrierung nicht finden.

Could not locate PropertySource: I/O error on GET request for "http://jhipster-registry:8761/config/clientaggregator/dev,twilio": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused) 

In der Zwischenzeit kann ich die Seiten anzeigen, die die Registrierung gut funktioniert.

Ich kann dies beheben, indem Sie "--network = host" hinzufügen, wenn Sie den Microservice starten. Wenn ich dies tue, überschreibt dies jedoch offenbar die native-zu-Host-Port-Zuordnung, und der Microservice kann vom Browser aus nicht erreicht werden.

Was noch bizarrer ist, dass vor etwa einer Woche habe ich die exakt gleiche Konfiguration verwendet, die gut funktioniert hat.

enter image description here

Wenn ich außerhalb eines Docker Container meine Anwendung ausführen, verbindet es mit der Registrierung in Ordnung. Wenn ich einen anderen Container anlege oder mich mit dem Microservice-Container verbinde und über curl auf die Konfigurations-URL zugreife, erhalte ich eine Antwort.

Antwort

-1

Ihre App versucht, die Registrierung mit dem Namen jhipster-registry als Hostnamen zu finden. Um dies zu ermöglichen, müssen Sie Ihre Registrierung und App einem Andocknetzwerk hinzufügen.

Erstellen Sie zunächst über das Netzwerk:

docker network create my-network 

Aktualisieren, um die compose Datei von dem Container einen Namen zu geben und sie zu dem Netzwerk hinzugefügt zu erstellen:

version: '2' 
services: 
    jhipster-registry: 
     image: jhipster/jhipster-registry:v3.1.0 
     volumes: 
      - ./central-server-config:/central-config 
     # When run with the "dev" Spring profile, the JHipster Registry will 
     # read the config from the local filesystem (central-server-config directory) 
     # When run with the "prod" Spring profile, it will read the configuration from a Git repository 
     # See https://jhipster.github.io/microservices-architecture/#registry_app_configuration 
     environment: 
      - SPRING_PROFILES_ACTIVE=dev,native 
      - SECURITY_USER_PASSWORD=admin 
      - SPRING_CLOUD_CONFIG_SERVER_NATIVE_SEARCH_LOCATIONS=file:./central-config/localhost-config/ 
      # - GIT_URI=https://github.com/jhipster/jhipster-registry/ 
      # - GIT_SEARCH_PATHS=central-config 
     ports: 
      - 8761:8761 
     networks: 
      - my-network 
     container_name: jhipster-registry 


networks: 
    my-network: 
    external: true 

Beim Ausführen der Anwendung auf das Netzwerk angeben:

docker run --network=my-network ... 

Jetzt kann Ihre Anwendung mit der Registrierung überkommunizierenals Hostname.

+0

Und ich kann nicht über meinen Browser auf den Container zugreifen. – ThisIsNoZaku

+0

@ThisIsNoZaku können Sie die Ausgabe für Docker ps bereitstellen? – yamenk

+0

'fae11e00e397 clientaggregator"/bin/sh -c 'echo ... "vor 6 Minuten Up 6 Minuten 5701/udp, 0.0.0.0:32769->8081/tcp wizard_pasteur1' – ThisIsNoZaku

Verwandte Themen