AgentSkillsCN

mockoon-cli

Mockoon CLI 可在 CI/CD、Docker 以及本地开发环境中运行模拟 REST API。支持 OpenAPI 导入/导出、动态模板化、代理模式,以及 Docker 化部署。 适用于:创建模拟 API、测试 API 集成、CI/CD 流水线、Docker 模拟服务、转换 OpenAPI 规范,或利用 Faker.js 生成虚假数据。

SKILL.md
--- frontmatter
name: mockoon-cli
description: |
  Mockoon CLI for running mock REST APIs in CI/CD, Docker, and local development.
  Supports OpenAPI import/export, dynamic templating, proxy mode, and Dockerization.

  Use when: creating mock APIs, testing API integrations, CI/CD pipelines, Docker mock services,
  converting OpenAPI specs, generating fake data with Faker.js.
license: MIT
source: plugin

Mockoon CLI

Requires: Node.js 18+

Lightweight CLI for deploying mock APIs anywhere. Accepts Mockoon data files or OpenAPI specifications.


Installation

bash
npm install -g @mockoon/cli

Verify:

bash
mockoon-cli --version

Quick Start

Start a Mock Server

bash
# From local file
mockoon-cli start --data ./api-mock.json

# From URL
mockoon-cli start --data https://example.com/mock-data.json

# With custom port
mockoon-cli start --data ./api-mock.json --port 3000

# Watch for changes (development)
mockoon-cli start --data ./api-mock.json --watch

From OpenAPI Spec

bash
# Import OpenAPI to Mockoon format
mockoon-cli import --input ./openapi.yaml --output ./mock-env.json

# Then start
mockoon-cli start --data ./mock-env.json

Commands Reference

start

Run mock API server(s).

bash
mockoon-cli start --data <file> [options]
FlagDescription
-d, --dataPath/URL to Mockoon or OpenAPI file(s) [required]
-p, --portOverride port(s)
-l, --hostnameOverride hostname(s)
-w, --watchAuto-restart on file changes
-t, --log-transactionLog full HTTP transactions
-X, --disable-log-to-fileDisable file logging
-e, --disable-routesDisable routes by UUID or path
-c, --faker-localeFaker.js locale (e.g., 'en_GB')
-s, --faker-seedFaker.js seed for reproducible data
--disable-admin-apiDisable admin API endpoint
--disable-tlsDisable TLS
--env-vars-prefixCustom env var prefix (default: MOCKOON_)
--public-base-urlBase URL for callbacks

Examples:

bash
# Multiple environments
mockoon-cli start --data ./api1.json ./api2.json --port 3000 3001

# With Faker locale
mockoon-cli start --data ./api.json --faker-locale en_GB

# Disable specific routes
mockoon-cli start --data ./api.json --disable-routes users products

# Background process
mockoon-cli start --data ./api.json &

import

Convert OpenAPI/Swagger to Mockoon format.

bash
mockoon-cli import --input <file> --output <file> [options]
FlagDescription
-i, --inputOpenAPI file path/URL
-o, --outputOutput Mockoon JSON path
-p, --prettifyFormat output JSON

Example:

bash
mockoon-cli import --input ./openapi.yaml --output ./mock-env.json --prettify

export

Convert Mockoon to OpenAPI v3.

bash
mockoon-cli export --input <file> --output <file> [options]
FlagDescription
-i, --inputMockoon file path/URL
-o, --outputOutput OpenAPI file path
-f, --formatOutput format: json or yaml
-p, --prettifyFormat JSON output

Example:

bash
mockoon-cli export --input ./mock-env.json --output ./openapi.yaml --format yaml

dockerize

Generate Dockerfile for containerized mocks.

bash
mockoon-cli dockerize --data <file> --output <file> [options]
FlagDescription
-d, --dataMockoon file path(s)
-p, --portPort(s) to expose
-o, --outputDockerfile output path
-t, --log-transactionEnable transaction logging

Example:

bash
mockoon-cli dockerize --data ./api.json --port 3000 --output ./Dockerfile
docker build -t my-mock-api .
docker run -d -p 3000:3000 my-mock-api

validate

Validate Mockoon environment files.

bash
mockoon-cli validate --data <files...>

Example:

bash
mockoon-cli validate --data ./api1.json ./api2.json

Docker Usage

Generic Image

bash
docker run -d -p 3000:3000 mockoon/cli:latest \
  --data https://example.com/mock-data.json --port 3000

With Local File

bash
docker run -d -p 3000:3000 \
  --mount type=bind,source=$(pwd)/mock-data.json,target=/data/mock.json,readonly \
  mockoon/cli:latest --data /data/mock.json --port 3000

Docker Compose

yaml
version: '3.8'
services:
  mock-api:
    image: mockoon/cli:latest
    command: --data /data/mock.json --port 3000
    ports:
      - "3000:3000"
    volumes:
      - ./mock-data.json:/data/mock.json:ro

Environment Variables

Access env vars in responses using templating:

handlebars
{{getEnvVar 'API_KEY'}}

Prefix: Variables must start with MOCKOON_ by default.

bash
# Set env var
export MOCKOON_API_KEY=secret123

# Start with custom prefix
mockoon-cli start --data ./api.json --env-vars-prefix MY_APP_

Admin API

Enabled by default at /mockoon-admin/.

Endpoints:

  • GET /mockoon-admin/logs - Transaction logs
  • GET /mockoon-admin/state - Environment state
  • POST /mockoon-admin/state - Update state
  • PURGE /mockoon-admin/state - Reset state

Disable with --disable-admin-api.


Faker.js Templating

Generate dynamic fake data in responses:

json
{
  "body": "{ \"name\": \"{{faker 'person.firstName'}}\", \"email\": \"{{faker 'internet.email'}}\" }"
}

Set locale:

bash
mockoon-cli start --data ./api.json --faker-locale de

Reproducible data:

bash
mockoon-cli start --data ./api.json --faker-seed 12345

CI/CD Integration

GitHub Actions

yaml
- name: Run Mock API
  uses: mockoon/cli-action@v2
  with:
    version: 'latest'
    data-file: './mock-data.json'
    port: 3000

GitLab CI

yaml
mock-api:
  image: mockoon/cli:latest
  script:
    - mockoon-cli start --data ./mock-data.json --port 3000 &
    - sleep 5
    - curl http://localhost:3000/api/health

Common Patterns

Development with Watch Mode

bash
mockoon-cli start --data ./api.json --watch --log-transaction

Multiple APIs

bash
mockoon-cli start \
  --data ./users-api.json ./orders-api.json \
  --port 3001 3002

Cloud-Hosted Environments

bash
mockoon-cli start --data cloud://{UUID} --token {API_TOKEN}

Logs

Default log location: ~/.mockoon-cli/logs/{environment-name}.log

Also outputs to stdout for container compatibility.


References

  • references/commands.md - Full command reference
  • references/templating.md - Faker.js and Handlebars helpers
  • templates/docker-compose.yaml - Docker Compose example
  • templates/github-action.yaml - GitHub Actions workflow