0

我根据https://github.com/rodolpheche/wiremock-dockerDockerfile中的示例创建了这个并将其复制到/my/project/wiremock目录中:

    FROM openjdk:8-jre-alpine

    ENV WIREMOCK_VERSION 2.27.1

    RUN apk add --update openssl

    # fix "No Server ALPNProcessors" when using https
    RUN apk add --update libc6-compat
    RUN ln -s /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2

    # grab su-exec for easy step-down from root
    # and bash
    RUN apk add --no-cache 'su-exec>=0.2' bash

    # grab wiremock standalone jar
    RUN mkdir -p /var/wiremock/lib/ \
      && wget https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8- 
    standalone/$WIREMOCK_VERSION/wiremock-jre8-standalone-$WIREMOCK_VERSION.jar \
    -O /var/wiremock/lib/wiremock-jre8-standalone.jar

    WORKDIR /home/wiremock

    EXPOSE 7070 7443

    CMD java $JAVA_OPTS -cp /var/wiremock/lib/*:/var/wiremock/extensions/* 
    com.github.tomakehurst.wiremock.standalone.WireMockServerRunner

然后我在/my/project/目录中创建了以下docker-compose.yml文件

    version: '3'

    services:
      wiremock:
        image: rodolpheche/wiremock:latest
        container_name: miplata-wiremock-local
        build: ./wiremock/.
        ports:
          - "7070:8080"
          - "7443:8443"
        volumes:
          - ./wiremock/stubs:/home/wiremock

/my/project/ wiremock /stubs中的子目录是映射__files

当我执行docker-compose up时,docker 容器可以工作,我可以提出一些可以正常工作的请求。但我的问题是,存根目录中的更改不会自动刷新,然后每次创建新的wiremock存根或更新现有存根时我都需要重新启动容器。

你知道我做错了什么吗?在不重新启动容器的情况下继续工作会很好。

谢谢!!!!

4

3 回答 3

3

我的建议是将映射和响应主体存储在文件中。

默认:

  1. 映射文件应包含在mappings文件夹中
  2. 正文文件应包含在__files文件夹中。

据我所知,wiremock 独立 java 进程执行以下操作(无论它是在主机上还是在容器中运行):

  1. 自动加载响应正文文件中的最新更改(来自 __files 文件夹)
  2. 需要POST调用以__admin/mappings/reset重新加载映射。对于问题描述中的示例,cURL 命令看起来像curl -X POST http://localhost:7070/__admin/mappings/reset

请参阅下面的映射和响应正文文件:

  • 映射/hello.json
{
  "request": {
    "method": "GET",
    "url": "/hello"
  },
  "response": {
    "status": 200,
    "bodyFileName": "hello.json"
  }
}

  • __files/hello.json
{
  "message": "Hello World !"
}

对我来说,这一切都像是一种魅力。Wiremock 是一款了不起的软件,对于使用针对不同用例的存根测试端点非常有用。

于 2020-11-07T09:52:11.293 回答
1

对存根目录内容的更改不会在 WireMock 应用程序中实时刷新。可以使用 Swagger UI:http://localhost:8080/__admin/swagger-ui 手动重置它或使用相应的 API 调用来自动化它。

于 2020-08-22T20:07:05.547 回答
1

我认为包含 json 文件的路径应该映射到/home/wiremock/mappingsdocker 实例内部。

    version: '3'

    services:
      wiremock:
        image: rodolpheche/wiremock:latest
        container_name: miplata-wiremock-local
        build: ./wiremock/.
        ports:
          - "7070:8080"
          - "7443:8443"
        volumes:
          - /path/to/json_files:/home/wiremock/mappings

如果您作为 docker 实例运行,则命令应如下所示:

# json mapping files
# mappings-checkin-mode.json mappings-kiosk-mode.json
docker run -it --rm -v $PWD:/home/wiremock/mappings -p 5050:8080 --name wiremock wiremock/wiremock:2.32.0 --enable-stub-cors
于 2022-01-04T11:56:13.500 回答