Docker経由Swagger UIを入れてみた
By Huy Van
はじめに
- 目的:SwaggerUIを開発環境に入れて、Railsと組み合わせたい
- Railsのswagger-ui gemもありますが、あれはSwaggerUIが古い。最新版のSwaggerUIを使いたい。
手動で構築するのがちょっと面倒だから、Dockerを使って入れてみた
作業
Docker HubにSwagger UIを探してこういうイメージを見つけた
https://registry.hub.docker.com/u/capoferro/swagger-ui/
capoferro / swagger-ui Simple docker container to serve the Swagger UI
インストールする方法は以下となります
- イーメジをpullする
$ docker pull capoferro/swagger-ui
- コンテナを起動する
$ docker run -d -p 4567:80 capoferro/swagger-ui
このコマンドはSwaggerUIコンテナの80ポートをホストマシンの4567ポートに紐付ける
- ブラウザに
boot2dockerマシンのIP
(普通192.168.59.103)のポート4567をアクセスするとSwaggerの画面が出てくる
これでSwaggerUIのインストールが成功した。
最後にRailsのアプリを紐付けること:
- 動いているSwaggerコンテナのIDを確認する (
$ docker ps
)
今回コンテナIDは859502ad6704
がわかりました。
- SwaggerUIコンテナに入る
$ docker exec -i -t 8595 /bin/bash
(8595はコンテナIDの先頭4文字です。コンテナIDを指定するとき先頭3,4文字でも動くはず)
index.html
の中にurl
のところにデフォルトURLをRailsのswagger_docパスに変更する:vi
でもいいですが、キーボードがおかしかったのでsed
を使いました
$ sed -i "s@http://petstore.swagger.wordnik.com/api/api-docs@http://192.168.59.103:3000/api/swagger_doc@g" index.html
終わり!
まわりの話
SwaggerUIイメージのソースコード: https://github.com/capoferro/swagger-ui-docker
Dockerfile
をみてわかるように、このイメージはUbuntuベース、nginx上にSwaggerUI動くという形です。SwaggerUIは公式のgithubをプルするので最新版になっているだろう。