【Cloud Native Buildpacks】Paketoでビルドするときにラベルをつける
はじめに
Paketo Buildpacksでビルドするときに、Dockerのラベルをつける方法を紹介します。
Cloud Native Buildpacksについての簡単な解説と、Paketo Buildpacksを使ってみた記事は下記を参照してください。
Cloud Native Buildpacksについてざっくり理解する
はじめに Cloud Native Buildpacksについてざっくり解説し、実際に使ってどん
【Cloud Native Buildpacks】Paketoでjavaアプリをビルドしてみる
はじめに Cloud Native Buildpacksを実現する一つである**Paketo B
Dockerのラベルについて
まず、そもそもDockerラベルについて、簡単に解説します。
Dockerのラベルは、イメージやコンテナに付与できるメタデータです。Dockerfileでは、LABEL
というインストラクションで設定できます。
Docker object labels
Learn about labels, a tool to manage metadata on Docker objects.
このDockerのラベルですが、**OCI Image Specificationではアノテーション(Annotation)**と呼ばれています。
image-spec/annotations.md at main · opencontainers/image-spec
OCI Image Format. Contribute to opencontainers/image-spec development by creating an account on GitHub.
OCIに準拠した呼び方だとアノテーションの方がいいのかもしれませんが、調べている限りラベルと呼ばれることの方が多そうでした。 実際、今回利用するbuildpackの中でもラベルと呼ばれていました。
ラベルの付け方
Paketo Buildpacksを使って、イメージをビルドするときにラベルをつけたい時は、$BP_IMAGE_LABELS
の値を設定します。
下記のように複数設定する場合はスペースで区切り、ダブルクォーテーションでバリューを括ることができます。
1pack build image-name --env 'BP_IMAGE_LABELS=key1=value1 key2="value2 value2"'
利用されるbuildpackは下記のものになります。
GitHub - paketo-buildpacks/image-labels: A Cloud Native Buildpack that enables configuration of labels on the created image
A Cloud Native Buildpack that enables configuration of labels on the created image - paketo-buildpacks/image-labels
BP_IMAGE_LABELS
の他にもOCI image-specで定義されているラベル(アノテーション)も設定できます。
image-spec/annotations.md at main · opencontainers/image-spec
OCI Image Format. Contribute to opencontainers/image-spec development by creating an account on GitHub.
試してみる
実際に任意のラベルをつけて、確認してみます。
今回利用するサンプルアプリはPaketo Buildpacksのサンプルアプリ(Java Maven Sample Application)を利用します。
samples/java/maven at main · paketo-buildpacks/samples
A collection of samples. Contribute to paketo-buildpacks/samples development by creating an account on GitHub.
まずはcloneして、ディレクトリを移動します。
1git clone https://github.com/paketo-buildpacks/samples
2cd java/maven
ラベルをつけて、ビルドします。Builderはpaketobuildpacks/builder:base
を利用します。
1pack build label-maven-app --builder paketobuildpacks/builder:base --env 'BP_IMAGE_LABELS=alpha=bravo charlie="delta echo"'
イメージがビルドされました。
1❯ docker image ls
2REPOSITORY TAG IMAGE ID CREATED SIZE
3label-maven-app latest 80f66c584157 42 years ago 264MB
docker inspect
でイメージを確認してみると、指定したラベルが付与されているのが確認できます。
1❯ docker inspect 80f66c584157
2
3...
4 "Labels": {
5 "alpha": "bravo",
6 "charlie": "delta echo",
7...
参考
- Paketo Buildpacks - Paketo Buildpacks
- How and when to use Docker labels / OCI container annotations | Snyk
- Docker object labels | Docker Documentation
- Open Container Initiative - Open Container Initiative
- image-spec/annotations.md at main · opencontainers/image-spec