コンテンツにスキップ

Docker を使用した Swagger Codegen

Dockerでの開発

run-in-docker.sh を使用して、すべての開発を行うことができます。このスクリプトは、ローカルリポジトリを Docker コンテナ内の /gen にマップします。また、~/.m2/repository を適切なコンテナの場所にマップします。

mvn package を実行するには

ターミナルウィンドウ
1
git clone https://github.com/swagger-api/swagger-codegen
2
cd swagger-codegen
3
./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-cli
2
./run-in-docker.sh langs # Executes 'langs' command for swagger-codegen-cli
3
./run-in-docker.sh /gen/bin/go-petstore.sh # Builds the Go client
4
./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を実行する

前提条件:VagrantVirtualBox をインストールします。

ターミナルウィンドウ
1
git clone http://github.com/swagger-api/swagger-codegen.git
2
cd swagger-codegen
3
vagrant up
4
vagrant ssh
5
cd /vagrant
6
./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 id
2
CID=$(docker run -d swaggerapi/swagger-generator-v3-minimal)
3
# allow for startup
4
sleep 5
5
# Get the IP of the running container
6
GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' $CID)
7
# Execute an HTTP request and store the download link
8
curl -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.zip
17
# Shutdown the swagger generator image
18
docker stop $CID && docker rm $CID

上記の例では、result.zip に生成されたクライアントが含まれます。

オンラインジェネレーターも参照してください。

Swagger Codegen CLI Dockerイメージ

Swagger Codegen イメージは、スタンドアロンの実行可能ファイルとして機能します。Homebrew を介してインストールする代わりに、または Java をインストールできない、またはインストール済みのバージョンをアップグレードできない開発者向けに使用できます。

このイメージでコードを生成するには、ローカルの場所をボリュームとしてマウントする必要があります。

ターミナルウィンドウ
1
docker 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 に配置されます。