This documentation explains how to use the Paketo Go Buildpack to build applications for several common use-cases. For more in-depth description of the buildpack’s behavior and configuration see the Paketo Go Buildpack Reference documentation.
Paketo Buildpacks を使用すると、ローカル PC で Go 言語のサンプルアプリケーションの OCI イメージを簡単にビルドできます。
必要なもの
git clone https://github.com/paketo-buildpacks/samples cd samples/go/mod
Copied!
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --builder paketobuildpacks/builder:base
Copied!
README
を参照して、アプリケーションを実行します。注意:この例では Paketo Base ビルダーを使っていますが、Paketo Go Buildpack は Paketo Full ビルダー、および、Paketo Tiny ビルダーと互換性があります
Paketo Go Buildpack は、 go.mod
の内容から Go 処理系の正確なバージョンを自動的に検出します。
ビルド時に使用する Go 処理系のバージョンは、環境変数 BP_GO_VERSION
で変更できます。
環境変数 BP_GO_VERSION
には semver 形式のバージョン番号を指定できます(例えば 1.14.1
や 1.14.*
など)。
Paketo Go Buildpack で使用できる Go 処理系のバージョンは、 Go Distribution Cloud Native Buildpack のリリースノート で確認できます。
Go 処理系のバージョンは明示的に指定しなくても構いません。
その場合、Go Distribution Cloud Native Buildpack に同梱された buildpack.toml
で定義されたバージョンを使用します。
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_VERSION
を指定できます。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_VERSION="1.14.1"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_VERSION
を指定できます。
# project.toml [ build ] [[ build.env ]] name="BP_GO_VERSION" value="1.41.1"
Copied!
buildpack.yml
を参照する
Go Distribution Cloud Native Buildpack の v1.0.0 から、buildpack.yml
で Go 処理系のバージョンを指定するのは非推奨になりました。
go build
コマンドを変更する
Paketo Go Buildpack は、ソースコードをコンパイルするとき、go build
にいくつかのフラグを指定します(詳しくは Go 言語のリファレンス を参照してください)。
環境変数 BP_GO_BUILD_FLAGS
や BP_GO_BUILD_LDFLAGS
で go build
に指定するフラグを変更できます。
go build
に -ldflags
を指定する
Paketo Go Buildpack では、-ldflags
を指定するための独立した環境変数を使用できます。
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_BUILD_LDFLAGS
を指定できます。
例えば、-ldflags="-X main.variable=some-value"
を指定するには次のように実行します。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_BUILD_LDFLAGS="-X main.variable=some-value"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_BUILD_LDFLAGS
を指定できます。
例えば、-ldflags="-X main.variable=some-value"
を指定するには次のように記述します。
# project.toml [ build ] [[ build.env ]] name="BP_GO_BUILD_LDFLAGS" value="-X main.variable=some-value"
Copied!
go-build
に -ldflags
以外のフラグを指定する
Paketo Go Buildpack では、環境変数 BP_GO_BUILD_FLAGS
でビルドフラグの初期値を変更できます。
詳しくは Go 言語のリファレンス を参照してください。
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_BUILD_FLAGS
を指定できます。
例えば、-buildmode=default -tags=paketo
を指定するには次のように実行します。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_BUILD_FLAGS="-buildmode=default -tags=paketo"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_BUILD_FLAGS
を指定できます。
例えば、-buildmode=default -tags=paketo
を指定するには次のように記述します。
# project.toml [ build ] [[ build.env ]] name="BP_GO_BUILD_FLAGS" value="-buildmode=default -tags=paketo"
Copied!
buildpack.yml
を参照する
Go Build Cloud Native Buildpack の v1.0.0 から、buildpack.yml
でフラグセットを指定するのは非推奨になりました。
環境変数 $BP_GO_BUILD_FLAGS
を使用してください。
初期設定の Paketo Go Buildpack は、コードベースのルートディレクトリのパッケージをコンパイルします。
他の(複数の)パッケージをコンパイルするには、環境変数 BP_GO_TARGETS
を指定します。
次のようなディレクトリ構成で、second
というサブディレクトリにビルドしたいパッケージが存在する場合を考えてみましょう。
app-directory
├── first
│ └── main.go
├── second
│ └── main.go
└── third
└── main.go
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_TARGETS
を指定できます。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_TARGETS="./second"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_TARGETS
を指定できます。
# project.toml [ build ] [[ build.env ]] name="BP_GO_TARGETS" value="./second"
Copied!
buildpack.yml
を参照する
Go Build Cloud Native Buildpack の v1.0.0 から、buildpack.yml
でコンパイルターゲットを指定するのは非推奨になりました。
環境変数 $BP_GO_TARGETS
を使用してください。
環境変数 BP_GO_TARGETS
には、コロンを区切り文字とする対象パッケージのリストを指定できます。
それぞれのパッケージに対応する実行可能ファイルは、コンテナイメージの 起動プロセス に指定できます。
前に説明したディレクトリ構造 において、first
と second
を 両方とも 指定する場合を説明します。
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_TARGETS
を指定できます。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_TARGETS="./first:./second"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_TARGETS
を指定できます。
# project.toml [ build ] [[ build.env ]] name="BP_GO_TARGETS" value="./first:./second"
Copied!
buildpack.yml
を参照する
Go Build Cloud Native Buildpack の v1.0.0 から、buildpack.yml
でコンパイルターゲットを指定するのは非推奨になりました。
環境変数 $BP_GO_TARGETS
を使用してください。
$GOPATH
を使用して、同じコードベースのサブパッケージをインポートするアプリケーションをビルドするときは、それぞれのサブパッケージのためのインポートパスを指定しなければなりません。
Paketo Go Buildpack では、環境変数 BP_GO_BUILD_IMPORT_PATH
でインポートパスを変更できます。
次のようなディレクトリ構成のコードベースについて考えてみましょう。
app-directory
├── handlers
│ └── details.go
└── main.go
main.go
の import ブロックには次のように記述されていることにします。
import (
"github.com/app-developer/app-directory/handlers"
)
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_GO_BUILD_IMPORT_PATH
を指定できます。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_GO_BUILD_IMPORT_PATH="github.com/app-developer/app-directory"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_GO_BUILD_IMPORT_PATH
を指定できます。
# project.toml [ build ] [[ build.env ]] name="BP_GO_BUILD_IMPORT_PATH" value="github.com/app-developer/app-directory"
Copied!
buildpack.yml
を参照する
Go Build Cloud Native Buildpack の v1.0.0 から、buildpack.yml
でコンパイルターゲットを指定するのは非推奨になりました。
環境変数 $BP_GO_BUILD_IMPORT_PATH
を使用してください。
初期設定の Paketo Go Buildpack は、ビルド成果物を除いて、ソース―コードディレクトリから全てのファイルを削除します。
コンテナイメージに静的アセットファイルを残しておきたいときは、環境変数 BP_KEEP_FILES
を設定してください。
例えば、サブディレクトリ assets/
と public/
のファイルをコンテナイメージに残すには次のようにします。
pack build
コマンドのフラグで指定する
pack
コマンドでビルドするとき、 --env
フラグで BP_KEEP_FILES
を指定できます。
pack build my-app --buildpack gcr.io/paketo-buildpacks/go \ --env BP_KEEP_FILES="assets/*:public/*"
Copied!
project.toml
で指定する
pack
コマンドでビルドするとき、アプリケーションディレクトリに配置した project.toml で BP_KEEP_FILES
を指定できます。
# project.toml [ build ] [[ build.env ]] name="BP_KEEP_FILES" value="assets/*:public/*"
Copied!
Paketo Go Buildpack では、ビルド時や実行時のどちらでも、CA 証明書の構成 手順に従って、ユーザーが自分で用意した CA 証明書をコンテナのルートトラストストアへ配置できます。
Paketo Go Buildpack では、Procfiles の導入 手順に従って、アプリケーションのコンテナイメージが起動するプロセスを変更できます。
Paketo Go Buildpack では、環境変数の構成 手順に従って、アプリケーションのコンテナイメージを実行するときの環境変数を変更できます。
Paketo Go Buildpack では、ラベルの構成 手順に従って、アプリケーションのコンテナイメージにラベルを指定できます。
Last modified: September 10, 2021