LoginSignup
57
36

More than 1 year has passed since last update.

GitHub Actionsユーザーは今すぐDocker Hubのpull回数制限に備えよう

Last updated at Posted at 2020-10-21

2021/06/19 追記

こちらのissueへのコメントの通り、本対応は不要になりました。この記事の情報は古いです。

発生する問題

2020年11月より、Docker Hubがログインしていないユーザーに対してPullの回数を制限します。というか、すでに段階的に始まっています。

GitHub Actionsについても、

toomanyrequests: Too Many Requests. Please see https://docs.docker.com/docker-hub/download-rate-limit/

というエラーでDockerイメージのpullに失敗し、ワークフローがエラーになりそうです(私はまだエラーになったことがない)

※ IPアドレスでのrate-limitのため、自分のpull回数に関わらずエラーが起こりえます。

対応策

公式アナウンス(英語)で紹介されている通り、docker/login-actionを使ってみましょう。

対応後のyaml

workflow.yml
jobs:
  HogeHogeJob:
    name: HogeHogeJob
    runs-on: ubuntu-latest
    steps:
      # この5行を追加する
      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      # あとは今まで通りで良い
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: 3.7

DOCKERHUB_USERNAMEDOCKERHUB_TOKENは、あらかじめsecretsとしてGitHubに登録しておきましょう(公式Doc

注意点として、DOCKERHUB_TOKEN にはパスワードではなくAccess Tokenを使うことが推奨されています。パスワードでも動きますが、ちゃんとAccess Tokenを発行しましょう。

Access Tokenの発行方法

  1. https://hub.docker.com/ にログイン
  2. 右上のユーザー名から Account Settings
  3. Security -> New Access Token -> あとは流れに乗る スクリーンショット 2020-10-21 20.28.35.png

発行されたAccess TokenをDOCKERHUB_TOKENとして登録すれば完了。docker/login-actionでログインできるようになります。

57
36
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
36