Docker を使用した Swagger Codegen
Dockerでの開発
すべての開発には、run-in-docker.sh
を使用できます。このスクリプトは、ローカルリポジトリを Docker コンテナ内の /gen
にマッピングします。また、~/.m2/repository
を適切なコンテナの場所にマッピングします。
mvn package
を実行するには
1git clone https://github.com/swagger-api/swagger-codegen2cd swagger-codegen3./run-in-docker.sh mvn package
ビルド成果物が作業ディレクトリからアクセスできるようになりました。
ビルドが完了すると、run-in-docker.sh
は swagger-codegen-cli の実行可能ファイルとして機能します。コードを生成するには、/gen
(例: /gen/out
) の下のディレクトリに出力する必要があります。例
1./run-in-docker.sh help # Executes 'help' command for swagger-codegen-cli2./run-in-docker.sh langs # Executes 'langs' command for swagger-codegen-cli3./run-in-docker.sh /gen/bin/go-petstore.sh # Builds the Go client4./run-in-docker.sh generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml \5 -l go -o /gen/out/go-petstore -DpackageName=petstore # generates go client, outputs locally to ./out/go-petstore
スタンドアロンジェネレーター Dockerでの開発
スタンドアロンジェネレーター開発を参照してください。
Vagrant で Docker を実行する
前提条件: Vagrant と VirtualBox をインストールします。
1git clone http://github.com/swagger-api/swagger-codegen.git2cd swagger-codegen3vagrant up4vagrant ssh5cd /vagrant6./run-in-docker.sh mvn package
公開されている事前構築済み Docker イメージ
- https://hub.docker.com/r/swaggerapi/swagger-generator/ (公式ウェブサービス)
- https://hub.docker.com/r/swaggerapi/swagger-codegen-cli/ (公式 CLI)
Swagger Generator Docker イメージ
Swagger Generator イメージは、コード生成用のセルフホスト型ウェブアプリケーションおよび API として機能します。このコンテナは CI パイプラインに組み込むことができ、生成されたコードにアクセスするには、少なくとも 2 回の HTTP リクエストといくつかの Docker オーケストレーションが必要です。
使用例 (JSON のコマンドライン処理には jq
がインストールされていることを前提としています)
1# Start container and save the container id2CID=$(docker run -d swaggerapi/swagger-generator)3# allow for startup4sleep 55# Get the IP of the running container6GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' $CID)7# Execute an HTTP request and store the download link8RESULT=$(curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{9 "swaggerUrl": "https://petstore.swagger.io/v2/swagger.json"10}' 'https://:8188/api/gen/clients/javascript' | jq '.link' | tr -d '"')11# Download the generated zip and redirect to a file12curl $RESULT > result.zip13# Shutdown the swagger generator image14docker stop $CID && docker rm $CID
上記の例では、result.zip
に生成されたクライアントが含まれます。
Swagger Codegen CLI Docker イメージ
Swagger Codegen イメージはスタンドアロンの実行可能ファイルとして機能します。Homebrew を介してインストールする代わりに、または Java をインストールできない開発者や、インストールされているバージョンをアップグレードできない開発者向けに使用できます。
このイメージでコードを生成するには、ローカルの場所をボリュームとしてマウントする必要があります。
例
1docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate \2 -i https://petstore.swagger.io/v2/swagger.json \3 -l go \4 -o /local/out/go
(Windows では、${PWD}
を %CD%
に置き換えてください)
生成されたコードは、現在のディレクトリの ./out/go
の下に配置されます。