Dockerfileでビルドして,Docker HubにPushするのがめんどくさい人向けに,GithubにPushした瞬間に自動でコンテナ化されてPushされる方法です.
1. Github Actionsの定義¶
.github/workflows/docker-build.yamlに以下の内容を貼り付け contextという部分にはDockerfileの場所を指定しているので,Dockerfileをディレクトリの中に入れている場合には context: ./ディレクトリ名 としてください.
name: build
on:
push:
branches:
- 'main'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/<DockerHubリポジトリ名>:latest
2. Docker Hubでのトークンの取得¶
以下にアクセス(ログインも) https://hub.docker.com/settings/security Access Tokensという部分でtokenを発行.1度しか表示できないのでメモしておく.
3. GithubにSecretsを登録¶
Githubのリポジトリ内から settings→secrets and variables→Actions Repository secretsに2つsecretsを設定する. secret名も以下のものにすること. - DOCKERHUB_USERNAME:Docker Hubのユーザ名を登録 - DOCKERHUB_TOKEN:先ほどコピーしたtokenを登録 (メモなどにコピーしていた場合は,セキュリティのため,メモを削除すること)
4. mainブランチにPushしてみる¶
ここまでの内容ができていれば,mainブランチにPushしたときにActionsというタブに進捗が表示されて,ビルドが完了するはずです. Docker Hubで確認してみて,Pushできていたら完成です.