January 20, 2015
はじめに 目的: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をプルするので最新版になっているだろう。