普段、簡易サーバを用意する場合って
毎回、nodejsとかphpとかでデモを一から用意するんですよね… まあ、それでも良いのですが ちょっとだけ楽したいってことがあります。
よく使うの
使い方の参考リンク
Node.js の mocky を使用し スタブREST API を作成してみる、その1 - Qiita
mocky を使ってちょっと賢いスタブAPIサーバを作る - Qiita
dockerでやりたい
最終的にはnginxとか使いたいけどとりあえず、docker~composeでの試作版を用意する
docker版
ディレクトリ構成
. ├── LICENSE ├── README.md ├── docker-compose.yml └── dockers └── mocky ├── Dockerfile ├── README.md └── app ├── api │ ├── api.js │ └── user.js ├── index.js ├── package-lock.json └── package.json
dockers/mocky/app/package.json
{ "name": "mocky", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "start": "nodemon --exec node --experimental-modules index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "mocky": "^0.1.11", "nodemon": "^2.0.7" }, "dependencies": { "canvas": "^2.6.1", "html-pdf": "^2.2.0" } }
dockers/mocky/app/index.js
import mocky from "mocky"; import Api from "./api/api.js"; mocky.createServer([Api.getUser, Api.getUsers]).listen(4321);
docker-compose.yml
version: "3" services: # スタブサーバ用 mocky: # コンテナ名 container_name: mocky # Dockerfile場所 build: ./dockers/mocky # コンテナに入るようにできる tty: true # ボリューム volumes: - "./dockers/mocky/app:/usr/src/app" # ポート ports: - "4321:4321" # 作業ディレクトリ working_dir: /usr/src/app # 実行コマンド entrypoint: npm start
dockers/mocky/Dockerfile
# ベースイメージ FROM node:12 # 作業ディレクトリ WORKDIR /usr/src # package.jsonをコピー # ホスト側はDockerfileの場所からの相対パス COPY ./app/package*.json ./ # パッケージインストール RUN npm install --no-optional && npm cache clean --force ENV PATH /usr/src/node_modules/.bin:$PATH # 作業ディレクトリ WORKDIR /usr/src/app # ホスト側はDockerfileの場所からの相対パス COPY ./app/. ./ # 実行 CMD ["npm", "start"]
起動
% docker-compose up -d Creating network "mocky_default" with the default driver Creating mocky ... done %
↓
% curl http://localhost:4321/api/v01/users | jq % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 42 0 42 0 0 14000 0 --:--:-- --:--:-- --:--:-- 14000 { "users": [ { "name": "hoge" }, { "name": "foo" } ] } %
参考情報
Dockerでmockyを使ったスタブサーバを立ち上げる - Qiita
DockerでNode.jsアプリをイイ感じに保つ4つの方法 #docker - クリエーションライン株式会社