带有 Wiremock 的 Docker 容器不会刷新卷中的更改

Ara*_*eba 1 docker wiremock docker-compose wiremock-standalone

我已经创建了这个Dockerfile并将其复制到/my/project/wiremock目录中,基于https://github.com/rodolpheche/wiremock-docker中的示例:

    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
Run Code Online (Sandbox Code Playgroud)

然后我在/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
Run Code Online (Sandbox Code Playgroud)

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

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

你知道我是否做错了什么吗?如果不重新启动容器就可以继续工作,那就太好了。

谢谢!!!!

jto*_*nic 7

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

默认情况下:

  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"
  }
}

Run Code Online (Sandbox Code Playgroud)
  • __文件/hello.json
{
  "message": "Hello World !"
}

Run Code Online (Sandbox Code Playgroud)

对我来说,这一切就像一种魅力。Wiremock 是一款令人惊叹的软件,对于使用不同用例的存根测试端点非常有用。