openapi-generator-cli

openapi-generator-cliJDKを利用するコマンドなのだが、JDKをインストールしたくないので、Dockerを使う。公式もわかっているのか、公式のdocker imageが存在する。生成したコードのビルドや実行にもDockerを使えるようにDockerfileもセットで生成されるので、Docker利用が前提になっているのであろう。

まずイメージを取得。

docker pull openapitools/openapi-generator-cli

これでコマンドの準備ができたので、swaggerのサンプルであるpetstore.yamlを使って幾つかのバージョンを生成してみることにする。

まず何を生成できるのか、一覧を表示。

docker container run --rm -v ${PWD}:/local openapitools/openapi-generator-cli list

本当はginでやりたかったのだが、ginやgoを試したてみたところその後のビルドでエラーになってしまい、早く動かしたかったのでとりあえずflaskでサーバのコードを生成してみた。

docker container run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/petstore.yaml -g python-flask -o /local/testserver

ばーっと標準出力になにかが流れて、うまくいった雰囲気を醸し出してきたら、先ほどのコマンドで指定したtestserverというフォルダにソースが生成されているので中を見てみると、なんとDockerfileが。これでbuildすることができる。

docker build -t testserver .

そして実行

docker run -p 8080:8080 server

サーバ側ができたので一旦おしまい。