0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

stoplight/prismを使用して、Swagger-ui上でモックサーバーを動かす方法(AWS/EC2・Docker利用)

Last updated at Posted at 2020-12-19

前提条件

  1. AWS/EC2インスタンスを作成済・SSH接続が可能
  2. nginxをEC2にインストール済
  3. swagger-uiが利用可能(Docker利用)
  4. swagger-uiに任意のyamlファイルを読み込み済

1がまだの方。
 ・AWS/EC2インスタンス作成
2がまだの方。
 ・nginxの設定
3がまだの方。
 ・swagger-uiの設定
4がまだの方。
 ・swagger-uiに任意ファイルを読み込ませる設定

以上を参考に、まず前提条件を全て満たすようにしてください。

1.EC2インスタンスにSSH接続する

sshLogin.ec2
ssh -i keypair_hogehoge.pem ec2-user@******

image.png

上記のような画像が表示されれば、SSH接続成功です。

2.dockerイメージをpull

SSH接続後に、stoplight/prismのdockerイメージをpullする

prismPull.docker
sudo docker pull stoplight/prism:3

スクリーンショット 2020-12-12 10.35.31.png

上記画像のようになれば、無事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

prism.docker
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

コンテナ名指定(任意)

containerName.docker
--name hogehoge

yamlファイル指定(必須)

yaml.docker
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にアクセスして、適切なサーバーを選択する

スクリーンショット 2020-12-19 13.28.35.png

6b.URLのタブを開き、[Try it out]ボタンを押す

スクリーンショット 2020-12-19 13.36.32.png

6c.[execute]ボタンを押す

 スクリーンショット 2020-12-19 14.43.02.png

6d.結果を確認する

下記のように、yamlファイルに設定した成功レスポンスが結果として表示されれば、OK

スクリーンショット 2020-12-19 14.56.11.png

ターミナルにも下記のように表示されているはずです。

[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を使用したモックサーバーの構築方法です。

不明点、質問などがあればコメント欄にお願い致します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?