2017-03-04 5 views
0

私はマイクロサービスアーキテクチャでSpringフレームワークを使用しており、HTTPSには自己署名入りの証明書(*.mydomainname.fr)を使用しています。
私はユーレカを使用しており、プロキシとしてレジストリとしてZuulを使用しています。だから、私の証明書のために、私のサービスはユーレカに"service-name".mydomainname.frという名前で登録されなければなりません。また、私は瞬時にDNSを使用していない、私はちょうど/etc/hosts127.0.0.1 register.bec3.fr)のドメイン名を追加しています。 Here my micro service architecture.ドッカーのユーレカで正しいドメイン名を取得

私はすべてのサービスをドッキング・コンポジションにドッキングしたいと思います。 私のドッキングウィンドウ-compose.ymlは次のとおりです。

version: '3' 
services: 
    registration-service: 
     image: maven:alpine 
     container_name: register.bec3.fr 
     working_dir: /usr/src/spring-boot-app 
     volumes: 
     - ./scripts:/usr/src/spring-boot-app/scripts 
     - ./sslcert:/usr/src/spring-boot-app/ssl 
     - ./registration-service:/usr/src/spring-boot-app 
     - ./.m2:/root/.m2 
     expose: 
     - 8761 
     entrypoint: bash -c "keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
     #entrypoint: bash -c "/usr/src/spring-boot-app/scripts/addhosts.sh && keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
     ports: 
     - 8761:8761 
     networks: 
      back-net: 
      ipv4_address: 172.20.0.5 
      aliases: 
       - register.bec3.fr 
     depends_on: 
     - "maria" 

proxy-service: 
    image: maven:alpine 
    container_name: proxy.bec3.fr 
    working_dir: /usr/src/spring-boot-app 
    volumes: 
    - ./scripts:/usr/src/spring-boot-app/scripts 
    - ./sslcert:/usr/src/spring-boot-app/ssl 
    - ./proxy-service:/usr/src/spring-boot-app 
    - ./.m2:/root/.m2 
    expose: 
    - 8888 
    entrypoint: bash -c "keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
    #entrypoint: bash -c "/usr/src/spring-boot-app/scripts/addhosts.sh && keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
    ports: 
    - 8888:8888 
    networks: 
     back-net: 
     ipv4_address: 172.20.0.6 
     aliases: 
      - proxy.bec3.fr 
    depends_on: 
    - "registration-service" 

auth-service: 
    image: maven:alpine 
    container_name: auth.bec3.fr 
    working_dir: /usr/src/spring-boot-app 
    volumes: 
    - ./scripts:/usr/src/spring-boot-app/scripts 
    - ./sslcert:/usr/src/spring-boot-app/ssl 
    - ./auth-service:/usr/src/spring-boot-app 
    - ./.m2:/root/.m2 
    expose: 
    - 9999 
    entrypoint: bash -c "keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
    #entrypoint: bash -c "/usr/src/spring-boot-app/scripts/addhosts.sh && keytool -noprompt -import -alias ioteam.bec3 -file /usr/src/spring-boot-app/ssl/ioteam.pem -keystore /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/cacerts -storepass xxxxxx && mvn -Dspring.profiles.active=docker spring-boot:run" 
    ports: 
    - 9999:9999 
    networks: 
     back-net: 
     ipv4_address: 172.20.0.7 
     aliases: 
      - auth.bec3.fr 
    depends_on: 
    - "maria" 
    - "registration-service" 

maria: 
    build: 
     context: ./ 
     dockerfile: maria-dev/Dockerfile 
    image: maria:latest 
    container_name: maria 
    environment: 
    - MYSQL_ROOT_PASSWORD=xxxxxx 
    networks: 
     back-net: 
     ipv4_address: 172.20.0.3 

networks: 
    back-net: 
    driver: bridge 
    ipam: 
    config: 
    - subnet: 172.20.0.0/24 

だから私のサービスがあるため、私のapplication.propertiseでそのパラメータの私の登録サービスに登録することができます:私はそれらを起動していたときに

eureka.client.service-url.defaultZone=https://register.bec3.fr:8761/eureka/ 

私の問題があります

  • 72959axxxxx:AUTH:9999
  • c0f1c4xxxがサービス名は、私のユーレカのダッシュボード上のドッキングウィンドウのIDですXX:プロキシは:

    • auth.mydomainname.fr:auth:9999
    • proxy.mydomainname.fr:proxy:8888:8888

    My eureka service

    とは、私はそのようなものが必要

私の証明書のためです。それがなければ、私は自分のサービスにアクセスすることができません:

curl -i -XPOST "https://web_app:@register.bec3.fr:8888/auth/oauth/token" -d "grant_type=password&username=toto&password=toto" --cacert my-cert.crt 

私は何ができますか?ユーレカでカスタムホスト名を使用することはできますか?またはDockerの設定を変更する必要がありますか? ありがとうございました。

答えて

0

私は同じ問題がありました。私がそれを解決する方法は、少し汚れていたので、それは概念の証明でした。

実際にはあなたのユーレカダッシュボードで72959axxxxx:auth:9999が得られ、auth.mydomainname.fr :auth:9999が必要です。

解決策は、サービスのドッカーにあるこのサービスのドメイン名を/ etc/hostsの先頭に追加することです。このスクリプトを使用してください:

#!/bin/bash 

HOSTS="/etc/hosts" 
TMP1="tmp1" 
TMP2="tmp2" 
IP="192.168.1.1" 
DN="domainenameservice" 

SERVICE="$IP\t$DN" 

echo -e $SERVICE > $TMP1 
cat $TMP1 $HOSTS > $TMP2 

echo "# test" > $HOSTS 
while IFS= read -r var 
do 
    echo "$var" >> $HOSTS 
done < $TMP2 
+0

ありがとうございます、それはうまくいきます –

関連する問題