GitHub Action で GitHub へ Push したらイメージをビルドして DockerHub へ登録する
DockerHub の Automated Build が有償化され、無償ユーザでは利用出来なくなってしまいました。 そこで GitHub に Push されたら GitHub Action でコンテナイメージをビルドし、DockerHub に登録する手順をメモしておきます。
前提¶
GitHub のデフォルト・ブランチ名は main
へ変更してあります。 また、今回の例では GitHub と DockerHub で以下のリポジトリ名を利用するものとします。
Service | Repository |
---|---|
GitHub | hello-world-docker |
DockerHub | hello-world |
DockerHub¶
Step.1¶
まず、DockerHub 側でリポジトリを作成します。 Create Repository
をクリックします。
Step.2¶
リポジトリ名を入力したら Create
をクリックし、リポジトリを作成します。
Step.3¶
Account Settings
をクリックします。
Step.4¶
GitHub Action から DockerHub へアクセスする為の Access Token を作成します。 Security
メニューにある New Access Token
をクリックします。
Step.5¶
Access Token Description
には識別しやすい名前を入力しておきます。 今回はシンプルに GitHub
としました。 Generate
をクリックします。
Step.6¶
Access Token が生成されます。 これは後の手順で GitHub に登録しますので控えておきます。 Copy and Close
をクリックします。
GitHub¶
Step.7¶
DockerHub と対になる (Dockerfile を登録する) リポジトリを GitHub に作成します。 GitHub へアクセスし、Repoisitories
→ Create
をクリックします。
Step.8¶
リポジトリ名を入力したら Create repository
をクリックします。
Step.9¶
リポジトリが作成されました。 作成されたリポジトリが選択されたままの状態で Settings
をクリックします。
Step.10¶
Secrets
をクリックします。
Step.11¶
New repository secret
をクリックします。
Step.12¶
DockerHub 側のユーザ名と、作成した AcceeToken を下記として登録します。
- DOCKER_USERNAME
- DOCKER_PASSWORD
まず、Name
には DOCKER_USERNAME
を、Value
には DockerHub 側のユーザ名を入力します。 入力が完了したら Add secret
をクリックします。
Step.13¶
同様に、次は Name
へ DOCKER_PASSWORD
を、Value
には DockerHub 上で生成した Access Token を入力します。 入力が完了したら Add secret
をクリックします。
Step.14¶
DOCKER_USERNAME
と DOCKER_PASSWORD
が登録されました。
ローカル PC¶
Step.15¶
ここからローカル PC で作業します。 GitHub 上に作成したリポジトリをクローンします。
1 2 |
|
次に GitHub Action を保存するディレクトリ (.github/workflows/
) を作成します。
1 |
|
GitHub Action を定義した YAML ファイルを保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Docker イメージをビルドする為の Dockerfile を登録します。 今回は Alpine をベースに Hello, World!
を返すだけ、という内容です。
1 2 3 4 |
|
ファイルを登録し、コミットしたらリポジトリに push します。
1 2 3 |
|
GitHub¶
Step.16¶
push されたファイルが GitHub 上に登録されていることを確認します。
Step.17¶
リポジトリの Actions
を確認すると .github/workflows/
に登録されたファイル (今回は build.yml
) が GitHub Action として登録され、実行中であることが分かります。
Step.18¶
しばらくすると (Dockerfile のビルドが終わり) GitHub Action が完了します。 もしエラーが出ている場合はエラー内容を確認し、デバッグします。
DockerHub¶
Step.19¶
DockerHub の該当リポジトリを確認すると GitHub Action によってビルドされた Docker イメージが latest
タグで登録されていることが分かります。
ローカル PC¶
Step.20¶
ビルドしたイメージを実行してみます。
1 2 3 4 5 6 7 |
|