AtomAnt küldte be időpontban
WireMock

Tehát nézzük, hogy mi a cél! Szeretnék egy olyan Docker konténert, amiben WireMock fut, és az abban található mock-olt szolgáltatások hívhatóak kívülről.  Ehhez első körben egy Docker Desktop alkalmazásra van szükség, ami a Docker weboldalán keresztül tölthető el, de ha már itt járunk, akkor érdemes egy regisztrációt is csinálni, ami most még nem kerül igazán semmibe.

Miután a letöltés sikeres, ellenőrizzük, hogy az operációs rendszerünkön telepítve van a WSL (Windows Subsystem for Linux) – nekem most Windows 10 Pro van a gépemen – amit a Control Panel -> Programs and Features -> Turn Windows feature on or off menü pont alatt ellenőrizhetünk, vagy szükség esetén telepíthetünk. Ha ez rendben van, akkor jöhet egy szokásos telepítés a Docker Desktop csomaggal, és ha mindent jól csináltunk, akkor ez hiba nélkül felkerült a számítógépre és még úgy tűnik, hogy fut is.

Következő lépés, hogy szükség van egy docker-compose.yml fájlra, amit siman kézzel és mondjuk egy notepad++ segítségével könnyedén létrehozhatunk, majd pedig a következő adattal feltölthetünk:

version: '3.9'
services:
  wiremock:
    image: "holomekc/wiremock-gui:latest"
    container_name: my_wiremock
    ports:
      - "8088:8089"
      - "8084:8088"
    volumes:
      - D:/Docker/wiremock/mappings:/home/wiremock/mappings
      - D:/Docker/wiremock/__files:/home/wiremock/__files
    environment:
      WIREMOCK_OPTIONS: "--port=8089,--https-port=8088,--max-request-journal=1000,--local-response-templating,--root-dir=/home/wiremock/"

Amire fontos, hogy odafigyeljünk ennél, az az, hogy a megadott portokon ne fusson más alkalmazás, mert akkor az hibát generálhat, illetve hogy megfelelően csatoljuk fel a meghajtókat a volumes alatt. Ahogy látható, nálam a Windows D meghajtóján vannak a könyvtárak (forrás), amelyek tartalmai a /home/wiremock/… könyvtárakban lesznek elérhetőek a konténerünkben. Itt hívnám fel a figyelmet arra is, amit a példa írása során én is elkövettem, hogy a –root-dir= résznél megadott struktúra legyen használva a volumes résznél (/home/wiremock).

Ha ideáig eljutottunk, akkor még hátra van egy json fájl létrehozása, ami tartalmazza a mock-olt hívásokat. Ehhez létre kell hozni egy json fájlt a Windowson a mappings könyvtárban, és mondjuk felhasználni az alábbi példát:

{
  "mappings": [
    {
      "id": "679dd3ce-55e5-45ee-b270-01dcf1b371ca",
      "request": {
        "urlPattern": "^/hello",
        "method": "GET"
      },
      "response": {
        "status": 200,
        "jsonBody": {
          "status": "success",
          "message": "Hello"
        },
        "headers": {
          "Content-Type": "text/plain"
        }
      },
      "uuid": "679dd3ce-55e5-45ee-b270-01dcf1b371ca"
    },
    {
      "id": "679dd3ce-55e5-45ee-b270-01dcf1b371c2",
      "request": {
        "urlPattern": "^/hello-2",
        "method": "GET"
      },
      "response": {
        "status": 200,
        "jsonBody": {
          "status": "success",
          "message": "Hello-2"
        },
        "headers": {
          "Content-Type": "text/plain"
        }
      },
      "uuid": "679dd3ce-55e5-45ee-b270-01dcf1b371c2"
    }
  ]
}

Ezt követően nincs más dolgunk, mint nyitni egy command prompt-ot, elnavigálni abba a könyvtárba, ahol a docker-compose.yml fájl található, majd pedig kiadni a következő parancsot: docker compose up. Ha minden jó, elkezdi letölteni az image-t, majd létrehozza a konténert a felcsatolt meghajtókkal és végezetül elindítja azt. Sikeres indítás után nyissuk meg a következőt egy böngészőben: http://localhost:8088/__admin/webapp/mappings

Végezetül pedig teszteljük le, hogy megfelelően működik. Ehhez nyissuk meg a Postman-t és hívjuk meg a végpontot.

Amint látható, nálam megfelelően működik és bízom benne, hogy másoknál is fog. Azonban azt ne felejtsük el, hogy ez a belépő szint. Innen meg igen sokat kell tanulni, hogy komplexebb mock-olások, illetve konténerek készüljenek. Sok sikert és kitartást hozzá!

Címkék