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できていたら完成です.