自分専用Dockerイメージの無料での簡単な作り方(GitHub ActionsでビルドしてDocker Hubに保存)

Dockerイメージを使う機会がある方向けの記事です。
Dockerなんて聞いたことがない、という人はそっと閉じてください。


Dockerイメージの置き場所を作る

まずDocker Hubにアカウントを作りましょう。
Dockerのイメージの保管場所として最もポピュラーな場所です。
以下にアクセスしてSign-inをしてください。


ログインできたらCreate repositoryボタンをクリック

Create repository


Publicは誰でもアクセスできるリポジトリなので、仮想通貨のウォレットアドレスなどはなるべく入れてはいけません。秘密鍵やシードフレーズは以ての外です。ただし、Privateにも入れて良いものではありません。
そのため、今回作ろうとしているDockerイメージが「他人に見せても構わないもの」であれば、Publicが無制限に無料なので、Publicを選んでも良いでしょう。

リポジトリ名を入れて、VisibilityをPublicかPrivateかお好きな方を選んでください

Repository Nameを入力してCreate

Dockerイメージをビルドするための場所としてGitHubのアカウントを作る

GitHubのアカウントを既に持っている人はスキップしてください。
以下にアクセスしてSign Upしてください。

Dockerイメージをビルドするためのコードの置き場所としてGitHubリポジトリを作る

GitHubにSign Up・Sign-inするとNewボタンがあると思うのでこちらをクリック

New

リポジトリは一旦非公開で作ると良いでしょう。今回は自分専用のイメージを作ることが目的なので、Publicにする意味はないでしょう。
GitHubは無料アカウントでもPrivateリポジトリを作ることが個人であれば可能です。
リポジトリ名はお好みの名前を入れてください。

Private, Create repository

リポジトリができたら次はDockerイメージを作るためのファイル、Dockerfileを作成します。
小さい文字ですが「creating a new file」という青文字のリンクを押してください。

creating a new file

Dockerfileというファイル名を入力します。
ファイルの中身は、まぁ、頑張って書いてください。
その後、Commit changes…をクリック

Input Filename, Dockerfile & commit changes

これでDockerfileが作成されます。
以降、このファイルを編集したいときにはファイルをクリックすれば編集ボタンがあるのでそこから編集できます

Edit this file

Dockerイメージをビルドする

先程作ったDockerファイルをビルドしてみましょう。
ActionsというタブがあるのでActionsをクリックしてください。

その中の「Docker Image」をConfigureしてみましょう。

Actions

以下のような感じになると思いますので、一度ここでCommit Changesをして保存しておきましょう

Commit changes…

GitHubからDocker Hubへのアクセス設定(Docker Hub側)

GitHubからDocker Hubにイメージを保存するためにちょっとだけ設定が必要です。Docker Hub側にアクセスしましょう。

以下のDocker Hubのアカウント設定内のSecurityタブを開きます。

New Access Tokenをクリック

New Access Token

トークン名は適当でいいのでGenerateしてください。
(GitHubとかがいいと思います)

Input Token Name and Generate

以下のようにユーザー名とアクセストークンが表示されます。
この2つをメモりましょう。


Copy access token

GitHubからDocker Hubへのアクセス設定(GitHub側)

先程GitHubに作成したリポジトリのSettingsページから「New repository secret」をクリックしてください。

New repository secret

Name: DOCKERHUB_TOKEN
Secret: 先程コピーしたDocker Hubのアクセストークン

2つ目にユーザー名も同じように保存します。
Name: DOCKERHUB_USERNAME
Secret: 先程コピーしたDocker Hubのユーザーアカウント名

GitHubのリポジトリ上にある .github/workflows ディレクトリを開く
docker-image.ymlファイルを開く
Editボタンを押す

Edit docker-image.yml

以下のように編集します。基本的にはDocker HubにPushするためのコードを書く形です。

【DockerHubのユーザー名を入れてね】/【DockerHubに作ったリポジトリ名を入れてね】
上記の部分は書き換えてください。

name: Build and Push Docker Image

on:
  push:
    branches:
      - main

jobs:
  build:
    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.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_TOKEN }}
    
    - name: Build and Push
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: 【DockerHubのユーザー名を入れてね】/【DockerHubに作ったリポジトリ名を入れてね】:latest

その後またCommit changes…ボタンを押して保存してください。

Dockerイメージがビルドされて、Docker Hubにアップロードされます。
以降はファイルを編集するたびに勝手にビルドされてアップロードされます。お疲れ様でした!

Dockerイメージを使う際は以下のようなコマンドで使えるでしょう。

docker pull あなたのDockerHubアカウント名/作ったリポジトリ名:latest
docker run --name お好きな名前 -it あなたのDockerHubアカウント名/作ったリポジトリ名:latest /bin/bash

以上。GitHub ActionsとDocker Hubを使ったクラウド環境でのDockerイメージの自動ビルド&保存に関する記事でした。

時間を掛けて調べたり写真を撮ったりして記事を書いています。「良かった」と思ったらサポートしてもらえると嬉しいです。 有料エリアを設けることもありますが、どちらか片方だけお願いできれば助かります。 サポート頂ければもっと多く頑張って書きます!