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イメージ
Swagger Generator Dockerイメージ
Swagger Generator イメージは、コード生成サービスを提供する、すぐに使用できる Web アプリケーション (swagger-generator) を提供します。
イメージは以下の環境変数を受け入れます。
JAVA_MEM
例:1024m
HTTP_PORT
例:8080
HIDDEN_OPTIONS_PATH
(HIDDEN_OPTIONS
の代替): 非表示にする言語を定義するhiddenOptions.yaml
ファイルを含むボリュームをアタッチする場合に便利です。例:/data/hiddenOptions.yaml
HIDDEN_OPTIONS
(HIDDEN_OPTIONS_PATH
の代替): 隠しオプションを環境変数として渡すことができます。形式は{category}:{language},{language},{language}|{category}:{language},{language},{language}
です。例:servers:foo,bar|clientsV3:wtf,isthis
。ここでカテゴリはclients
,servers
,clientsV3
,serversV3
のいずれかになります。
コンテナ実行例
docker pull swaggerapi/swagger-generator-v3
docker run -e "HIDDEN_OPTIONS=servers:foo,bar|clientsV3:fgf,sdsd" -e "JAVA_MEM=1024m" -e "HTTP_PORT=80" -p 80:80 --name swagger-generator-v3 -v /tmp:/jetty_home/lib/shared swaggerapi/swagger-generator-v3
または
docker run -e "HIDDEN_OPTIONS_PATH=/hiddenOptions.yaml" -e "JAVA_MEM=1024m" -e "HTTP_PORT=80" -p 80:80 --name swagger-generator-v3 -v /tmp:/jetty_home/lib/shared swaggerapi/swagger-generator-v3
このDockerイメージは、ジェネレータjarを/jetty_home/lib/shared
ディレクトリにドロップする(通常はDockerボリュームを介して)ことで、カスタムジェネレータをサポートします。例として、ホストに/my/custom/coolgenerator.jar
と/my/custom/weirdgenerator.jar
がある場合、以下のようにジェネレータサービスジェネレータに追加されます。
docker run -e "HIDDEN_OPTIONS_PATH=/hiddenOptions.yaml" -e "JAVA_MEM=1024m" -e "HTTP_PORT=80" -p 80:80 --name swagger-generator-v3 -v /my/custom:/jetty_home/lib/shared swaggerapi/swagger-generator-v3
バージョン3.0.20までは、カスタムジェネレーターを使用しない場合でも-v /{WHATEVER_DIR}:/jetty_home/lib/shared
を指定する必要があることに注意してください。
オンラインジェネレーターも参照してください。
Swagger Generator「Minimal」Dockerイメージ
Swagger Generator 「Minimal」イメージは、自己ホスト型の Web アプリケーションおよびコード生成用 API として機能します。
このコンテナは CI パイプラインに組み込むことができ、生成されたコードにアクセスするには Docker のオーケストレーションが必要です。
使用例
1# Start container and save the container id2CID=$(docker run -d swaggerapi/swagger-generator-v3-minimal)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 link8curl -X POST \9 https://:8080/api/generate \10 -H 'content-type: application/json' \11 -d '{12 "specURL" : "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml",13 "lang" : "jaxrs-jersey",14 "type" : "SERVER",15 "codegenVersion" : "V3"16 }' > result.zip17# Shutdown the swagger generator image18docker 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-v3 generate \2 -i http://petstore.swagger.io/v2/swagger.json \3 -l go \4 -o /local/out/go
生成されたコードは、現在のディレクトリの ./out/go
に配置されます。