Creé este Dockerfile y lo copié en el directorio / my / project / wiremock , según las muestras de 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

Luego creé el siguiente archivo docker-compose.yml dentro del directorio / my / project /

    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

Los directorios secundarios dentro de / my / project / wiremock / stubs son mapeos y __files .

Cuando ejecuto docker-compose up, el contenedor de la ventana acoplable funciona y puedo hacer algunas solicitudes que funcionan bien. Pero mi problema es que los cambios dentro del directorio stubs no se actualizan automáticamente y luego necesito reiniciar el contenedor cada vez que creo un nuevo stub de wiremock o actualizo uno existente.

¿Tienes idea de si estoy haciendo algo mal? Sería bueno seguir trabajando sin reiniciar el contenedor.

¡¡¡¡Gracias!!!!

0
Ara Kokheba 22 ago. 2020 a las 06:05

2 respuestas

La mejor respuesta

Mi recomendación es almacenar tanto las asignaciones como los cuerpos de respuesta en archivos.

Por defecto:

  1. Los archivos de mapeo deben incluirse en la carpeta mappings
  2. Los archivos del cuerpo deben incluirse en la carpeta __files.

Según mi conocimiento, el proceso java independiente de wiremock hace lo siguiente (independientemente de si se ejecuta en el host o en un contenedor):

  1. carga automáticamente los últimos cambios en los archivos del cuerpo de respuesta (de la carpeta __files)
  2. requiere una llamada POST a __admin/mappings/reset para volver a cargar las asignaciones. Para el ejemplo en la descripción de la pregunta, el comando cURL parece como curl -X POST http://localhost:7070/__admin/mappings/reset

Consulte a continuación tanto la asignación como los archivos del cuerpo de respuesta:

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

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

Para mí todo esto funciona a las mil maravillas. Wiremock es un software increíble muy útil para probar puntos finales con stubs para diferentes casos de uso.

1
jtonic 7 nov. 2020 a las 09:52

Los cambios en el contenido del directorio de stubs no se actualizan en tiempo real en la aplicación WireMock. Es posible usar la IU de Swagger: http: // localhost: 8080 / __ admin / swagger-ui para restablecerlo manualmente o la llamada API correspondiente para automatizarlo.

1
A. Kootstra 22 ago. 2020 a las 20:07