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
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_USERNAME
とDOCKERHUB_TOKEN
は、あらかじめsecretsとしてGitHubに登録しておきましょう(公式Doc)
注意点として、DOCKERHUB_TOKEN
にはパスワードではなくAccess Tokenを使うことが推奨されています。パスワードでも動きますが、ちゃんとAccess Tokenを発行しましょう。
Access Tokenの発行方法
- https://hub.docker.com/ にログイン
- 右上のユーザー名から Account Settings
- Security -> New Access Token -> あとは流れに乗る
発行されたAccess TokenをDOCKERHUB_TOKEN
として登録すれば完了。docker/login-actionでログインできるようになります。