当前位置: 首页 > 知识库问答 >
问题:

带有Wiremck的Docker容器不会从卷刷新更改

束作人
2023-03-14

我已经创建了这个Dockerfile,并根据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

然后我创建了下面的docker compose。yml文件位于/my/project/directory中

    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存根或更新现有存根时,我都需要重新启动容器。

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

谢谢!!!!

共有3个答案

东方骏
2023-03-14

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

    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
魏朗
2023-03-14

对存根目录内容的更改不会在WireMock应用程序中实时刷新。可以使用大摇大摆的用户界面:http://localhost:8080/__admin/swagger-ui手动重置,或相应的API调用自动重置。

鱼渝
2023-03-14

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

默认情况下:

  1. 映射文件应包含在映射文件夹中
  2. 正文文件应包含在\u files文件夹中

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

  1. 自动加载响应正文文件中的最新更改(从_文件文件夹中)

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

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

  • __档案/你好。json
{
  "message": "Hello World !"
}

对我来说,这一切都很有魅力。Wiremock是一个令人惊叹的软件平台,对于测试不同用例的存根endpoint非常有用。

 类似资料:
  • 我是Docker的新人,我正在尝试创建/使用现有映像来启动我的应用程序。在阅读了几篇stackoverflow帖子和Docker文档后,我能够使用Docker容器启动我的应用程序。现在我正在寻找保存修改后的Docker容器的正确方法,以便我可以重用容器通过运行docker命令来启动我的应用程序。 我看到人们使用$docker提交来保存docker容器。如果我运行此命令,容器将保存在哪里?其他人可以

  • 我有很多运行docker容器的测试。每个都有一个卷。 如何知道需要删除的卷名? 例如: 手动停止并删除容器后,卷仍然存在。 我不想删除所有卷,因为其中一些卷仍在使用中。

  • 问题内容: 我有使用ngRepeater显示的数组,但是使用此指令时,我使用的是ngInit指令,该指令执行应返回要显示的对象的功能。一切工作正常,但是当我在数组中添加新值的“新建”按钮时,仅在我认为应根据数组值的量执行函数后,才执行函数“SetPreview”。我怎样才能做到这一点? 用户界面: 控制器: 示例在这里-jsfiddle 编辑: 这是一个更复杂的示例: ->现在,电话集合为空,当您

  • 对于烧瓶应用程序,我使用主机和容器之间的体积。我的docker-comment的web部分看起来像这样: 这是我的Dockerfile: 我认为我的卷创建得很好,因为当我从主机在中创建和更新时,容器中的也会更新。但问题是,当我从浏览器重新加载页面时,内容尚未更新。 当我做我得到了以下信息: 卷b26d14是多少?我不认为这是一个用docker-comment创作的。运行后返回: 我必须让它工作的唯

  • 问题内容: 我在由运行的docker容器中存在一些问题。 Docker文件 还有我的docker-compose.yml 当我运行它时,一切都很好,但编辑文件不会增加应用程序的重载。文件已更改,我确定是因为我通过ssh连接对其进行了检查,并且容器中的文件已被编辑。再次重新启动容器时,将应用所有更改。我以为当我仅通过docker切换建筑物图像来构成此图像时,它就会消失,但事实并非如此。 当我打电话时

  • 我想我可以按照我另一篇文章的建议使用合订本 docker-撰写mariadb外部卷映射问题 但是我知道容器应该是无状态的。所以看来我的想法是错误的? 我不知道会发生什么样的灾难性故障,所以如果容器被封砖,我有可能会丢失所有数据吗?或者有没有办法使用外存恢复? 如何处理这种情况?我有一个管理迁移的模式表,所以不希望该表是新的,并从square 1开始 问题:我应该让云上的Mariadb容器写到它喜欢