ローカル開発環境でミドルウェアを動かすためにDockerを使っているのですが、チーム外で開発しているAPIのモックが欲しくなることがあります。様々な手段が考えられますが、今回は固定のJSONを返すだけのシンプルなモックサーバでよいという要件だったので、サイバーエージェントさんのnode-easymockというものを使ってみました。
これはNode.jsで実装されたモックサーバで、特にプログラムを書かずともレスポンスとして返したいファイルをパス階層に応じたディレクトリに配置しておくだけでそのファイルの内容を返すAPIを提供してくれるというものです。
ファイルの内容は完全固定だけでなく、リクエストで受け取った内容を組み込むなど簡単なテンプレーティングが可能です。また、別途設定ファイルを作成することでより複雑なルーティングや、レスポンスにディレイをかけたりといったこともできます。
これをDockerコンテナに組み込んでみます。Dockerfile
は以下のような感じになります。
FROM node:0.12 RUN npm install -g easymock RUN mkdir /var/easymock WORKDIR /var/easymock COPY json /var/easymock EXPOSE 3000 ENTRYPOINT ["easymock"]
FROM
にnode:0.12
を指定しているのがポイントで、依存モジュールが古いのかnode:latest
を使うとeasymockのインストールに失敗してしまいます。
モックAPIが返す内容はDockerfile
と同じ場所にjson/
というディレクトリを掘ってJSONファイルなどを配置しておきます。たとえば以下のような配置になっていたとします。
+-Dockerfile +-json/ +-user/ +-1_get.json
そうするとビルドされたコンテナはhttp://192.168.99.100:3000/user/1に対するGETリクエストの結果として配置したJSONファイルの内容を返してくれます。
このようにnode-easymockを使うとプログラミングレスでモックAPIサーバを作ることができ、Dockerコンテナにも簡単に組み込むことができます。今回のようなちょっとした用途であれば非常に便利なツールです。