Actions による Docker イメージのビルド
GitHub Actions のワークフロー内で、アプリケーション用 Docker イメージのビルドプロセスを自動化します。
「Actions による Docker イメージのビルド」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Dockerイメージとは
ようこそ。このレッスンでは、GitHub Actionsを使用してDockerイメージをビルドする方法を学びます。
まず、Dockerイメージとは何でしょうか。ソフトウェアを実行するために必要なすべてのものを含む、軽量で独立した実行可能なパッケージだと考えてください。
- コード
- ランタイム(例:Java、Python)
- システムツールとライブラリ
- 設定ファイル
これはDockerコンテナを作成するための設計図のようなもので、異なる環境でもアプリケーションを一貫して実行できるようにします。
Dockerビルドを自動化する理由
Dockerイメージを手動でビルドすると、同じ作業の繰り返しになり、ミスも発生しやすくなります。そこで役立つのが自動化です。
GitHub Actionsを使ってDockerイメージのビルドをCI/CDパイプラインに組み込むと、次のメリットが得られます。
- 一貫性: すべてのビルドで同じ手順が実行されます。
- 速度: 自動ビルドは手動ビルドより高速です。
- 信頼性: 人為的なミスを減らせます。
- 連携: コードの変更時にビルドが自動的に開始されます。
これは現代のDevOpsにおける基本的な実践方法です。
Dockerfileという設計図
Dockerfileは、Dockerイメージを組み立てるためのすべてのコマンドを記述したテキストファイルです。レシピのようなものです。
非常にシンプルなDockerfileの例を見てみましょう。
FROM alpine:latest
WORKDIR /app
COPY . .
CMD ["echo", "Hello from Docker!"]Dockerfileを理解する
このシンプルなDockerfileを分解して見てみましょう。
FROM alpine:latest: ベースイメージを指定します。Alpineという小さなLinuxディストリビューションを使用して開始します。WORKDIR /app: イメージ内の作業ディレクトリを設定します。COPY . .: プロジェクトディレクトリにあるすべてのファイルを、イメージ内の/appディレクトリにコピーします。CMD ["echo", "Hello from Docker!"]: このイメージからコンテナを起動したときに実行されるコマンドです。
このファイルはプロジェクトのルートに配置します。
ワークフローの設定
GitHub ActionsでDockerイメージをビルドするには、リポジトリにYAMLファイル(例:.github/workflows/docker-build.yml)を作成します。
このファイルで、複数の自動化されたステップから成るワークフローを定義します。
イメージをビルドする基本的なワークフローには、通常、次の処理が含まれます。
- コードをチェックアウトする
- Dockerのビルド環境を設定する
- Dockerイメージをビルドする
ステップ1:コードを取得する
ほとんどすべてのGitHub Actionsワークフローでは、最初にリポジトリのコードを取得します。これはactions/checkoutアクションを使用して行います。
このアクションによってリポジトリがランナーにクローンされ、Dockerfileとアプリケーションコードをビルドプロセスで利用できるようになります。
ワークフローファイルでは、次のように記述します。
- name: Checkout repository code
uses: actions/checkout@v4ステップ2:Docker Buildxを設定する
次に、Dockerのビルド環境を設定します。docker/setup-buildx-actionの使用を強くおすすめします。
BuildxはDockerのビルド機能を拡張するコンポーネントで、マルチプラットフォームビルドなどの高度な機能をサポートします。
ワークフローに次のステップを追加します。
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3ステップ3:Dockerイメージをビルドする
いよいよイメージのビルドです。この処理にはdocker/build-push-actionを使用します。
主なオプションは次のとおりです。
context: .: ビルドコンテキスト(通常はリポジトリのルート)を指定します。push: false: 今回はレジストリにプッシュせず、ビルドだけを行います。プッシュについては後のレッスンで説明します。tags: my-app:latest: イメージに名前とタグを設定します。
- name: Build and tag Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: my-app:latest完全なビルドワークフローの例
DockerイメージをビルドするGitHub Actionsワークフローの完全な例です。このYAMLは.github/workflows/docker-build.ymlに記述してください。
このワークフローは、リポジトリへのpushが発生するたびに実行されます。
name: Build Simple Docker Image
on: [push]
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and tag Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: my-app:latest確認
GitHub ActionsでDockerイメージをビルドする方法について、理解度を確認しましょう。
まとめ:Dockerイメージのビルド
よくできました。GitHub ActionsでDockerイメージのビルドを自動化する基本を学びました。
次の内容を扱いました。
- Dockerイメージとは何か、そしてなぜ重要なのか
- イメージの設計図としての
Dockerfileの役割 - 基本的なGitHub Actionsワークフローの設定
actions/checkout、docker/setup-buildx-action、docker/build-push-actionなどの重要なアクションの使用
次のレッスンでは、ビルドしたイメージをコンテナレジストリにプッシュする方法を学びます。
よくある質問
「Actions による Docker イメージのビルド」レッスンは無料ですか?
はい。「Actions による Docker イメージのビルド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Actions による Docker イメージのビルド」で何を学びますか?
GitHub Actions のワークフロー内で、アプリケーション用 Docker イメージのビルドプロセスを自動化します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Actions による Docker イメージのビルド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Actions による Docker イメージのビルド
- レジストリへのイメージのプッシュ
- Actions による Kubernetes へのデプロイ
- CI/CDにおけるHelm ChartとKubernetesマニフェスト