skydum

個人的な作業記録とか備忘録代わりのメモ

GitHub Actionsでdocker build

リリース時に手動でコンテナのビルドをするのが面倒なので、GitHub Actionsを使ってdocker buildを行うこととなった。
意外と簡単にできたので、もっと早くやればよかった。
今後はCI/CDをやりたいのでpytestの自動化とか、ドキュメントの自動生成も組み込んで行きたいと思うが、 今回は最初なので、ブランチかコミットにtagをつけるとコンテナがビルドされるように設定を行った。

ファイルを作成する

GitHub Actionsを使うには.github\workflows\main.yml のファイルを作成する必要がある。
main.ymlのファイル名については*.yaml or *.ymlであれば何でも良いので、どのような処理を行うものかわかるようなファイル名を設定すること。

今回はテストなのでmain.ymlとした。

.github\workflows\main.yml

  • 以下の所はdocker hubにアップロードする際に利用されるコンテナの名称になるので変更が必要。
    • tags: ${{ secrets.DOCKER_USERNAME }}/コンテナの名前:${{ steps.prep.outputs.tag }}
  • contextの所が.となっているのでリポジトリの/にDockerfileがあることが前提となっています。
name: Build and Deploy of Docker container

on:
  push:
    tags:
      - '*'
      
jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME  }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Prepare tag name
        id: prep
        run: echo ::set-output name=tag::${GITHUB_REF/refs\/tags\//}
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: ${{ secrets.DOCKER_USERNAME }}/コンテナの名前:${{ steps.prep.outputs.tag }}

secretsの設定を行う

secretsの設定を行うことによりmain.ymlで利用できる環境変数を設定する。 今回だとDOCKER_USERNAME, DOCKER_PASSWORDを設定する。

DOCKER_USERNAMEにはdocker hubにログインするときに利用するユーザー名 DOCKER_PASSWORDにdocker hubにログインするときに利用するパスワード

タグを付ける

git tag -a release-20240509-001 master -m "2024-05-09 release"
git push origin release-20240509-001 

docker hubを確認

問題なく動作している。