stoplight/prismを使用して、Swagger-ui上でモックサーバーを動かす方法(AWS/EC2・Docker利用)
前提条件
- AWS/EC2インスタンスを作成済・SSH接続が可能
- nginxをEC2にインストール済
- swagger-uiが利用可能(Docker利用)
- swagger-uiに任意のyamlファイルを読み込み済
1がまだの方。
・AWS/EC2インスタンス作成
2がまだの方。
・nginxの設定
3がまだの方。
・swagger-uiの設定
4がまだの方。
・swagger-uiに任意ファイルを読み込ませる設定
以上を参考に、まず前提条件を全て満たすようにしてください。
1.EC2インスタンスにSSH接続する
ssh -i keypair_hogehoge.pem ec2-user@******
上記のような画像が表示されれば、SSH接続成功です。
2.dockerイメージをpull
SSH接続後に、stoplight/prismのdockerイメージをpullする
sudo docker pull stoplight/prism:3
上記画像のようになれば、無事pull成功です。
3.nginx.confにモックサーバーのルーティングを設定する
nginx.confを開く
sudo vim /etc/nginx/nginx.conf
nginx.confに追記する
server {
listen 80;
listen [::]:80;
server_name _;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
//swagger-editorの設定
location /swagger-editor/docker/ {
proxy_pass http://localhost:8000/;
proxy_redirect off;
}
//swagger-uiの設定
location /swagger-ui/docker/ {
proxy_pass http://localhost:8001/;
proxy_redirect off;
}
//モックサーバーの設定(今回はこちらを設定する)
location /swagger-mock/docker/ {
proxy_pass http://localhost:4010/;
proxy_redirect off;
}
4.yamlファイルにモックサーバーを追記する
今回は、こちらで設定したyamlファイルを使用します。
そして、serversのところにモックサーバーを追加します。
servers:
- url: http://petstore.swagger.io/
//モックサーバー用設定
- url: http://EC2インスタンスのIPアドレス/swagger-mock/docker/
EC2インスタンスのIPアドレスの部分は、適切な値に変更してください。
5.モックサーバーを起動する
モックサーバーを起動する際に、任意のyamlファイルを指定する必要があります。
今回の設定
コンテナ名:prism
yamlファイルを保存しているディレクトリ: /home/ec2-user/www
yamlファイル: pet.yaml
sudo docker run --name prism -it -p 4010:4010 -v /home/ec2-user/www:/tmp stoplight/prism:3 mock -h 0.0.0.0 /tmp/pet.yaml
コンテナ名指定(任意)
--name hogehoge
yamlファイル指定(必須)
mock -h 0.0.0.0 /tmp/pokemon.yaml
以下のように、ターミナルに表示されれば、OKです。
[ec2-user@ip-00-0-0-00 ~]$ sudo docker run --name prism -it -p 4010:4010 -v /home/ec2-user/www:/tmp stoplight/prism:3 mock -h 0.0.0.0 /tmp/pet.yaml
[3:37:33 AM] › [CLI] … awaiting Starting Prism…
[3:37:34 AM] › [CLI] ℹ info GET http://0.0.0.0:4010/pets?limit=60
[3:37:34 AM] › [CLI] ▶ start Prism is listening on http://0.0.0.0:4010
6.swagger-uiにアクセスし、モックサーバーを試す
6a.モックサーバーを選択する
swagger-uiにアクセスして、適切なサーバーを選択する
6b.URLのタブを開き、[Try it out]ボタンを押す
6c.[execute]ボタンを押す
6d.結果を確認する
下記のように、yamlファイルに設定した成功レスポンスが結果として表示されれば、OK
ターミナルにも下記のように表示されているはずです。
[5:55:41 AM] › [HTTP SERVER] get /pets ℹ info Request received
[5:55:41 AM] › [NEGOTIATOR] ℹ info Request contains an accept header: application/json
[5:55:41 AM] › [VALIDATOR] ✔ success The request passed the validation rules. Looking for the best response
[5:55:41 AM] › [NEGOTIATOR] ✔ success Found a compatible content for application/json
[5:55:41 AM] › [NEGOTIATOR] ✔ success Responding with the requested status code 200
その他の設定
モックサーバーをバックグラウンドで動かす方法
もし、ターミナル上で[Try it out]→[Excute]の結果を確認しなくても良い場合は、モックサーバーをバックグラウンドで動かすことも可能です。
フォアグラウンドver
sudo docker run --name prism -it -p 4010:4010 -v /home/ec2-user/www:/tmp stoplight/prism:3 mock -h 0.0.0.0 /tmp/pokemon.yaml
バックグラウンドver
sudo docker run --name prism -it -d -p 4010:4010 -v /home/ec2-user/www:/tmp stoplight/prism:3 mock -h 0.0.0.0 /tmp/pet.yaml
-d
このオプションがつくと、各コンテナをバックグラウンドで起動させることができます。
エラー対処
docker: Error response from daemon: Conflict. The container name "/prism" is already in use by container "768393267a3839c7db21028daeb8f5a39b67766f994615de3e068ea7f819c500". You have to remove (or rename) that container to be able to reuse that name.
docker runコマンドを入力後に、上記のエラーが出た場合、コンテナ名が被っていることが原因です。
下記のコマンドを入力して、コンテナを削除しましょう。
sudo docker rm 任意のコンテナ名
コンテナ削除する前に、コンテナを停止することを忘れないようにしましょう。
sudo docker stop 任意のコンテナ名
最後に
以上が、stoplight/prismを使用したモックサーバーの構築方法です。
不明点、質問などがあればコメント欄にお願い致します。
Author And Source
この問題について(stoplight/prismを使用して、Swagger-ui上でモックサーバーを動かす方法(AWS/EC2・Docker利用)), 我々は、より多くの情報をここで見つけました https://qiita.com/wadakatu/items/4325f3e20babd6b32c1b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .