jsonファイルを元にDockerでSwagger-ui用のコンテナを作成する


前回この記事でSwaggerのjsonファイルとyamlファイルを出力しました。
今回はそれを元にSwagger-ui用のDockerコンテナを作成したいと思います。

Swagger-ui用のDockerコンテナ作成

公式からSwagger用のimageが公開されているので、今回はそちら使用します。

DockerHub:swaggerapi/swagger-ui

docker-compose.ymlの作成

さっそく書いていきましょう。
この記事で作成したsample_qiitaの直下にあるdocker-compose.ymlに以下のように追記します。

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