前回この記事でSwaggerのjsonファイルとyamlファイルを出力しました。
今回はそれを元にSwagger-ui用のDockerコンテナを作成したいと思います。
Swagger-ui用のDockerコンテナ作成
公式からSwagger用のimageが公開されているので、今回はそちら使用します。
DockerHub:swaggerapi/swagger-ui
docker-compose.ymlの作成
さっそく書いていきましょう。
この記事で作成したsample_qiita
の直下にあるdocker-compose.yml
に以下のように追記します。
swagger-ui:
image: swaggerapi/swagger-ui
container_name: "sample_qiita_swagger-ui"
ports:
- "8081:8080"
volumes:
- ./swagger-docs/swagger.json:/swagger.json
environment:
SWAGGER_JSON: /swagger.json
SWAGGER_JSON
はコンテナ内に存在するファイルを指定することで、そのjsonファイルを元にSwagger UIを表示することができます。
docker-compose up -d
でコンテナを起動し、localhost:8081にアクセスするとswagger.jsonを元に作成されたSwagger UIが表示されます。
最後に
実は今回の場合、ソースコードからAPIドキュメントを作成するボトムアップ式を採用しているので、正直作る意味がほとんどないんですよね。
また本当はここからさらにapiコンテナを立ててswaggerのコンテナと接続しcurlを実行できれば良いのですが、上手くできなかったのでこのような形になりました。
swaggerコンテナの中に入ってcurlコマンドを打つと上手く動くのに、実際にSwagger上でTry outを押してcurlコマンドで取得しようとすると上手く動きませんでした。
参考文献
Dockerを使ってswagger.yamlをサクッとみる (swagger-ui 3.x)
Swagger EditorとSwagger UIをDockerで動かす
Docker を使って Swagger の編集環境を構築する
DockerでSwagger UIを起動してAPI仕様書をブラウザに表示する手順
Spring Boot/KotlinでCRUD操作のできるAPIを作成する方法
[Jackson]kotlin/springbootでSwaggerのjsonファイルとyamlファイルを出力する方法
swagger-api/swagger-ui