【Cloud Native Buildpacks】Paketoでビルドするときにラベルをつける

2022.04.10
2024.03.24
コンテナ
Cloud Native BuildpacksPaketo Buildpacks

はじめに

Paketo Buildpacksでビルドするときに、Dockerのラベルをつける方法を紹介します。

Cloud Native Buildpacksについての簡単な解説と、Paketo Buildpacksを使ってみた記事は下記を参照してください。

Cloud Native Buildpacksについてざっくり理解する

Cloud Native Buildpacksについてざっくり理解する

はじめに Cloud Native Buildpacksについてざっくり解説し、実際に使ってどん

【Cloud Native Buildpacks】Paketoでjavaアプリをビルドしてみる

【Cloud Native Buildpacks】Paketoでjavaアプリをビルドしてみる

はじめに Cloud Native Buildpacksを実現する一つである**Paketo B

Dockerのラベルについて

まず、そもそもDockerラベルについて、簡単に解説します。

Dockerのラベルは、イメージやコンテナに付与できるメタデータです。Dockerfileでは、LABELというインストラクションで設定できます。

Docker object labels

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

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

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

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

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"'

イメージがビルドされました。

1docker image ls
2REPOSITORY       TAG     IMAGE ID       CREATED       SIZE
3label-maven-app  latest  80f66c584157   42 years ago  264MB

docker inspectでイメージを確認してみると、指定したラベルが付与されているのが確認できます。

1docker inspect 80f66c584157
2
3...
4            "Labels": {
5                "alpha": "bravo",
6                "charlie": "delta echo",
7...

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee