代码之家  ›  专栏  ›  技术社区  ›  Kane

如何使用本地回购运行存根Docker映像

  •  0
  • Kane  · 技术社区  · 7 年前

    我试着用本地repo运行存根Docker映像,如下所示,

    STUBRUNNER_IDS="cn.xxx.accounting:accounting-configserver:1.0.0:stubs:9876"
    STUBRUNNER_REPOSITORY_ROOT="file:///m2/repository"
    STUBRUNNER_PORT="8083"
    SC_CONTRACT_DOCKER_VERSION=2.0.0.RC2
    docker run  --rm --interactive --tty -e "STUBRUNNER_IDS=${STUBRUNNER_IDS}" -e "REPO_WITH_BINARIES_URL=${STUBRUNNER_REPOSITORY_ROOT}" -p "${STUBRUNNER_PORT}:${STUBRUNNER_PORT}" -p "9876:9876" -v ~/.m2:/m2  springcloud/spring-cloud-contract-stub-runner:"${SC_CONTRACT_DOCKER_VERSION}"
    

    然后我发现下面的错误,

    原因:org.springframework.beans.beannistentiationexception: 未能实例化 [org.springframework.cloud.contract.stubrunner.batchstubrunner]: 工厂方法“BatchStubRunner”引发异常;嵌套异常为 java.lang.IllegalStateException:在的类路径上未找到存根 [CN.XXX.记帐:记帐配置服务器]

    看起来存根运行程序正在使用类路径查找存根。如何将存根模式更改为本地模式?我找不到 spring-cloud-contract-stub-runner . 有谁能做到这一点?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Marcin Grzejszczak    7 年前

    当然,这足够把你的本地.m2的体积附加到容器里的那个。你还需要通过 STUBRUNNER_STUBS_MODE=REMOTE ( https://github.com/spring-cloud/spring-cloud-contract/blob/master/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/StubRunnerProperties.java#L100 )

    #!/bin/bash
    
    SC_CONTRACT_DOCKER_VERSION="${SC_CONTRACT_DOCKER_VERSION:-1.2.4.BUILD-SNAPSHOT}"
    APP_IP="$( ./whats_my_ip.sh )"
    
    # Stub coordinates 'groupId:artifactId:version:classifier'
    STUB_GROUP="${STUB_GROUP:-com.example}"
    STUB_ARTIFACT="${STUB_ARTIFACT:-bookstore}"
    STUB_VERSION="${STUB_VERSION:-0.0.1.RELEASE}"
    STUB_PORT="9876"
    
    # Spring Cloud Contract Stub Runner properties
    STUBRUNNER_PORT="${STUBRUNNER_PORT:-8083}"
    STUBRUNNER_IDS="${STUB_GROUP}:${STUB_ARTIFACT}:${STUB_VERSION}:stubs:${STUB_PORT}"
    STUBRUNNER_REPOSITORY_ROOT="http://${APP_IP}:8081/artifactory/libs-release-local"
    
    docker run  --rm -e "STUBRUNNER_IDS=${STUBRUNNER_IDS}" -e "SERVER_PORT=${STUBRUNNER_PORT}" -e "STUBRUNNER_REPOSITORY_ROOT=${STUBRUNNER_REPOSITORY_ROOT}" -p "${STUBRUNNER_PORT}:${STUBRUNNER_PORT}" -p "${STUB_PORT}:${STUB_PORT}"  -v ~/.m2:/root/m2 springcloud/spring-cloud-contract-stub-runner:"${SC_CONTRACT_DOCKER_VERSION}" 
    

    注意,我们使用的是maven本地或docker映像,但它指向 ${USER_HOME}/.m2 阿法尔是 /root/.m2 在码头工人。