Swagger EditorとSwagger UIをDockerで動かす
Swagger Editor
docker pull swaggerapi/swagger-editor docker run -d -p 81:8080 --name swe swaggerapi/swagger-editor
一部generator.swagger.ioから外部リソースを取得してるみたい。
初期表示のAPI仕様は外部から取得したファイルを表示しているよう。
今のSwagger Editorはここら辺を変更できなくて、後述のSwagger UIだと変更できるようだ。
Swagger UI
docker pull swaggerapi/swagger-ui docker run -d -p 82:8080 --name swu swaggerapi/swagger-ui
中身を見ているとDocker起動時に環境変数を設定することで一部パラメータを変更できるようになっている。
例えば下記のようにAPI_URLを設定することで表示に使用するJSONを変更したりできる。
docker run -d -p 82:8080 --name swu -e API_URL=http://generator.swagger.io/api/swagger.json swaggerapi/swagger-ui
2018/02/21現在での最新コミットではポートやOAUTH関係の環境変数が設定できるようになっている。
Docker使用時に走るdocker-run.shというファイルで環境変数を使った設定を行っている。 この環境変数に関するドキュメントがどこかにあれば教えてほしい。
こんな風にSWAGGER_JSONという環境変数にコンテナ内で存在するファイル名を指定してあげるとそれをSwager UIに表示することができる。
docker run -d -p 82:8080 --name swu -e "SWAGGER_JSON=/test.json" -v d:/Docker/swagger/test.json:/test.json swaggerapi/swagger-ui
docker-compose
docker-composeだとこんな感じ。
swagger-editor: image: swaggerapi/swagger-editor container_name: "xxx-swagger-editor" ports: - "8081:8080" swagger-ui: image: swaggerapi/swagger-ui container_name: "xxx-swagger-ui" ports: - "8082:8080" volumes: - ./swagger/test.json:/test.json environment: SWAGGER_JSON: /test.json