Skip to main content
For enterprise customers the CLI offers the possibility of running your Mock APIs locally, removing the need to have a connection to the internet.

Getting Access

Contact the WireMock team to request a license file, which should be placed in the appropriate configuration location for your operating system:
  • Windows: %LOCALAPPDATA%\wiremock-cli (typically C:\Users\{username}\AppData\Local\wiremock-cli)
  • macOs: /Users/{username}/.config/wiremock-cli
  • Linux: $XDG_CONFIG_HOME/wiremock-cli (typically /home/{username}/.config/wiremock-cli)

Usage

First you will need to pull one or more of your Mock APIs locally. This can be done by running the pull mock-api command as detailed here. Once you have pulled one or more of your Mock APIs, you can then run them as so:
wiremock run
This will run all the Mock APIs you have pulled down into the .wiremock directory. A table will be printed showing you which port is being used for which API. (Naturally you can pass the same --wiremock-dir argument to override the default .wiremock directory.)

TLS Usage

You can run your Mock APIs locally using a TLS certificate of your choice. You configure this by editing the local environment config file, .wiremock/wiremock.yaml, and specifying your https settings:
services:
  local-running-service-name:
    https:
      port: <local port to bind to>
      certificate: <certificate details>
If you have a file containing a PEM encoded RSA private key and X509 certificate, you can provide it as so:
certificate:
  pem: /path/to/file.pem
A PEM encoded file should look something like this:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHIpsyRDeM1lFQ
<multiple lines of base64 encoded data>
GhxuZ3ceXiqwvhH8Yt5gNs0=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIUR24W6NZN7xPwSqc59usFQ37HPYswDQYJKoZIhvcNAQEL
<multiple lines of base64 encoded data>
dHhXPaefkEhrsUbnXGYRfwQhf4SzdYCMCJno7KKsNn6RLIo=
-----END CERTIFICATE-----
If you have a PKCS 12 key store containing your private key and X509 certificate, you can provide it as so:
certificate:
  keystore: /path/to/keystore.p12
  password: very_secret
  alias: key_alias # optional - if omitted, the first entry in the key store is used
If you wish to use the same certificate across multiple services, you may specify it as so:
global:
  https:
    certificate: <certificate details>
services:
  local-running-service-name:
    https:
      port: <local port to bind to>
Any service with an https section will then use that certificate by default. You may still provide a specific certificate for any individual service:
global:
  https:
    certificate:
      pem: /path/to/global-cert.pem
services:
  service-using-specific-certificate:
    https:
      port: <local port to bind to>
      certificate:
        pem: /path/to/specific-cert.pem
  service-using-default-certificate:
    https:
      port: <local port to bind to>
In addition, you can specify a global keystore but reference different certificates in it by alias for a given service:
global:
  https:
    certificate:
      keystore: /path/to/keystore.p12
      password: very_secret
      alias: default_key_alias
services:
  service-using-specific-alias:
    https:
      port: <local port to bind to>
      certificate:
        alias: service_specific_key_alias
  service-using-default-alias:
    https:
      port: <local port to bind to>
If you do not provide any certificate details, your services will run using our default self-signed certificate.

Running in a Container

The CLI is published to Docker Hub as wiremock/wiremock-cli. By default, it executes the run command, but in order for the run command to be able to operate you must mount your config directory to /etc/wiremock-cli and the working directory containing your mock APIs to /work. You will also need to publish the appropriate ports for the services you are running. Here is a typical example on Linux or macOs when running two Mock APIs:
docker run \
  -v ~/.config/wiremock-cli:/etc/wiremock-cli \
  -v $(pwd):/work \
  -p 8080:8080 \
  -p 8081:8081 \
  wiremock/wiremock-cli:latest
I