2017-10-13 8 views
0

마이크로 서비스를 사용하는 프로젝트가 있습니다. 테스트 환경을 만들기 위해 wire-mock을 사용하려고합니다.wiremock-docker를 사용하여 여러 URL을 프록시로 사용

docker-compose를 사용하여 여러 URL을 어떻게 프록시 할 수 있습니까?

여기 내 도커 작성 파일입니다.

networks: 
    ft-simulator: 
     external: false 
services: 
    app: 
     depends_on: 
     - nginx 
     environment: 
     - SPRING_PROFILES_ACTIVE=simulator 
     - JAVA_FLAGS=-Dhttp.proxyHost=wiremock -Dhttp.proxyPort=8080 
     healthcheck: 
      interval: 1m 
      retries: 3 
      test: 
      - CMD 
      - curl 
      - -f 
      - http://localhost:8080/health 
      timeout: 10s 
     image: ft-simulator:latest 
     ports: 
      - "8080:8080" 
     networks: 
      ft-simulator: 
       aliases: 
       - bcp 
    nginx: 
     image: nginx 
     ports: 
      - "80:80" 
      - "443:443" 
     networks: 
     - ft-simulator 
    wiremock: 
     image: rodolpheche/wiremock:2.8.0-alpine 
     networks: 
     - ft-simulator 
     ports: 
      - "8081:8080" 
     volumes: 
      - "$PWD/stubs:/home/wiremock" 
     command: ["--proxy-all=http://bcp:8080, http://www.google.com"] 
version: '3.1' 

Google은 시작될 때까지 단순히 자리 표시 자일뿐입니다. 내가 실행하면

까지 고정 표시기를-구성 나는 다음과 같은 오류 그것은 --proxy-all 매개 변수를 사용하여 동시에 둘 이상의 대상 URL에 프록시 수 없습니다

crp11070m:wiremock-simulation john.hamlett$ docker logs -f wiremocksimulation_wiremock_1 
Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in authority at index 7: http://bcp:8080, http://www.google.com 
    at java.net.URI.create(URI.java:852) 
    at com.github.tomakehurst.wiremock.standalone.CommandLineOptions.proxyHostHeader(CommandLineOptions.java:274) 
    at com.github.tomakehurst.wiremock.core.WireMockApp.buildStubRequestHandler(WireMockApp.java:123) 
    at com.github.tomakehurst.wiremock.WireMockServer.<init>(WireMockServer.java:72) 
    at com.github.tomakehurst.wiremock.standalone.WireMockServerRunner.run(WireMockServerRunner.java:65) 
    at com.github.tomakehurst.wiremock.standalone.WireMockServerRunner.main(WireMockServerRunner.java:113) 
Caused by: java.net.URISyntaxException: Illegal character in authority at index 7: http://bcp:8080, http://www.google.com 
    at java.net.URI$Parser.fail(URI.java:2848) 
    at java.net.URI$Parser.parseAuthority(URI.java:3186) 
    at java.net.URI$Parser.parseHierarchical(URI.java:3097) 
    at java.net.URI$Parser.parse(URI.java:3053) 
    at java.net.URI.<init>(URI.java:588) 
    at java.net.URI.create(URI.java:850) 
    ... 5 more 

답변

0

를 얻을.

각 경로에 대해 프록시 응답과 함께 스텁 매핑을 생성하여 들어오는 요청을 기반으로 프록시 대상을 다양하게 할 수 있습니다.

1 호선 :

{ 
    "request": { 
     "urlPattern": "/route1/.*" 
    }, 

    "response": { 
     "proxyBaseUrl" : "http://target-host-1.com" 
    } 
} 

경로 2 : http://target-host-1.com/route1/whateverhttp://target-host-2.com/route2/whatever로 프록시 요청을 끝장 있도록 URL 경로 부분은 URL에 추가 얻을 것이다

{ 
    "request": { 
     "urlPattern": "/route2/.*" 
    }, 

    "response": { 
     "proxyBaseUrl" : "http://target-host-2.com" 
    } 
} 

주 .

+0

고맙습니다. 외부 의존성을 조롱하는 것이 가능합니까? 내가 http://www.sweetviz.com/bestimage.jpg에서 이미지를 가져 오는 등? 내 응용 프로그램에 JSON을 반환하는 외부 서비스가 있습니다. 가능하지 않다면 내면화 할 수 있습니다. –