GitHub Container RegistoryのDockerイメージをリポジトリに紐づける方法
GitHub Container Registoryにpushしたコンテナイメージをリポジトリに紐づけてPackages欄に出す方法がやっとわかった
— k1LoW (@k1LoW) 2021年3月5日
GitHub Container Registoryは、GitHub Package Registryとは異なりPublicなDockerイメージのpullにGitHub認証の必要がないなど、利用者にとって便利です。
また、リポジトリとの紐付けが強制されていないので自由に様々なイメージを管理できます。
イメージはProfileページのPackagesタブにリストアップされます。
ただ、私の主な用途としてはリポジトリで公開しているライブラリのDockerイメージの提供なのでリポジトリと紐付けたい。
具体的にはリポジトリの Packages の欄に表示させたい。
どう紐づければいいのかわからなかったのですが、やっとわかりました。
DockerfileにLABELとして org.opencontainers.image.source
を設定すればいいようです。
LABEL org.opencontainers.image.source=https://github.com/k1LoW/tbls
もしくはdocker build時にビルドフラグとして --label=org.opencontainers.image.source=https://github.com/k1LoW/tbls
を渡せばいいみたいです。
私はGoReleaserを利用しているので以下のような設定を追加しています。
dockers: - goos: linux goarch: amd64 image_templates: - 'ghcr.io/k1low/tbls:v{{ .Version }}' - 'ghcr.io/k1low/tbls:latest' dockerfile: docker/Dockerfile.ghcr.io build_flag_templates: - "--pull" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.name={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--label=org.opencontainers.image.source=https://github.com/k1LoW/tbls"
これで、無事リポジトリにDockerイメージを紐づけることができました。Dockerイメージの設定画面でも青の認証バッジがつきます。
そして、最後にDockerイメージをPublicにするのを忘れないでください。
どうやらGitHub Container RegistoryにpushしたイメージはデフォルトはPrivateなようです。
これを忘れると誰にも使ってもらえません。
というわけでメモでした。