げっとシステムログ

WEB開発メモ

GitLab で private レジストリのイメージを参照

CONTENTS
  1. やりたいこと
  2. CI/CD variables の設定
  3. DOCKER_AUTH_CONFIG の中身
  4. まとめ
  5. 参考資料

やりたいこと

Rust のテストをするとき、毎回の依存パッケージビルドが無駄なのでビルド済みイメージを参照したい。 ビルド済みイメージは完全なアプリケーションを含むので、private レジストリを使用したい。

image に private レジストリのイメージを指定する。

image: private.registory.example.com/path/to/image:tag

単にこう書いただけだと、イメージを pull できないって言われてエラーになる。

イメージを pull するには設定が必要。

TOP

CI/CD variables の設定

CI/CD の variables に以下の設定を追加する。

DOCKER_AUTH_CONFIG=<.docker/config.json の内容>

ここで、protected ではないパイプラインで private レジストリのイメージを使用する場合は protected のチェックを外す必要がある。

設定が正しい場合、以下のログが確認できる。

Using Docker executor with image private.registory.example.com/path/to/image:tag ...
Authenticating with credentials from $DOCKER_AUTH_CONFIG
Pulling docker image private.registory.example.com/path/to/image:tag ...

Authenticating with credentials from $DOCKER_AUTH_CONFIG が出ていれば正しく設定されている。 これが出ていない場合は設定が通っていない。

TOP

DOCKER_AUTH_CONFIG の中身

DOCKER_AUTH_CONFIG~/.docker/config.json の内容を指定する。

これは以下の手順で生成できる。

docker login private.registory.example.com
cat ~/.docker/config.json

必要なのは "auths" と該当するドメインの設定のみ。 パイプラインからここに列挙したレジストリへのアクセスが許可されるので、必要なものだけ設定する。

設定によっては docker login で ~/.docker/config.json が更新されない場合もあるっぽいけど、その場合は他の方法になる。

TOP

まとめ

DOCKER_AUTH_CONFIG を protected で作成していたため、テストパイプラインで参照できずに認証が通らないところではまったのでまとめてみた。

TOP

参考資料

TOP