0Pricing
DevOps Bootcamp · レッスン

JenkinsによるDockerイメージのビルド

コード変更時にDockerイメージを自動的にビルドし、レジストリへプッシュするようJenkinsジョブを設定します。

「JenkinsによるDockerイメージのビルド」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

Dockerビルドの自動化

Dockerイメージを手動でビルドすると、時間がかかり、結果にばらつきが生じやすく、エラーも起こりがちです。チームで開発する場合や、コードを頻繁に変更する場合は特にそうです。

信頼性が高く効率的なソフトウェアデリバリーには、自動化が不可欠です。このレッスンでは、JenkinsとDockerを連携して、イメージの作成とプッシュを自動化する方法を学びます。

JenkinsによるDockerイメージのビルド — イラスト1

JenkinsとDockerの前提条件

JenkinsでDockerイメージをビルドするには、Dockerデーモンと通信する必要があります。つまり、Jenkinsジョブが実行されるマシンまたはエージェントに、Dockerクライアントがインストールされていなければなりません。

次のものも必要です。

  • 実行中のJenkinsサーバー(レッスン1で構築したもの)
  • Dockerレジストリへのアクセス(例:Docker Hub)
  • サンプルアプリケーションとそのDockerfile

JenkinsホストへのDockerのインストール

JenkinsでDockerコマンドを実行できるようにするには、JenkinsサーバーまたはエージェントにDockerがインストールされ、設定されていることを確認してください。多くの場合、JenkinsユーザーにはDockerデーモンを操作する権限が必要です。

Linuxシステムでは、次のように設定できます。

sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins

レジストリ認証情報の保護

Dockerレジストリにイメージをプッシュするには、Jenkinsに認証情報が必要です。これらをJenkinsfileやジョブの設定に直接記述せず、安全に保存することが重要です。

Jenkinsに組み込まれているCredentials機能が最適です。

  • Manage Jenkins > Manage Credentialsに移動します。
  • Dockerレジストリ用に新しいUsername with password認証情報を追加します。
  • 後で参照できるよう、説明的なID(例:dockerhub-credentials)を付けます。

サンプルFlaskアプリケーション

非常にシンプルなPython Flaskアプリケーションを使用します。これをapp.pyという名前のファイルに保存します。このアプリケーションは基本的な「Hello」メッセージを返します。

Pythonの依存関係を指定するために、requirements.txtファイルも必要です。

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from CoddyKit!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

# requirements.txt
Flask==2.0.2

Dockerfileの作成

次に、Dockerfileを使ってDockerイメージを定義します。このファイルには、アプリケーションイメージをビルドする方法をDockerに指示します。

このDockerfileは、app.pyおよびrequirements.txtと同じディレクトリに配置してください。

# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

Jenkinsジョブ:ビルドステップ

ここでは、JenkinsのFreestyleジョブを設定します。Build Stepsセクションで、Execute shellステップを追加します。このコマンドでDockerイメージをビルドします。

yourusernameをDocker Hubのユーザー名またはレジストリパスに置き換えることを忘れないでください。

# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .

Jenkinsジョブ:ログインとプッシュのステップ

イメージをビルドしたら、Dockerレジストリにプッシュする必要があります。通常、そのためにはログインが必要です。先ほど保存した認証情報を使用します。

別のExecute shellステップを追加します。正しく設定されていれば、Jenkinsは認証情報を環境変数(例:DOCKER_USER、DOCKER_PASS)として注入します。

# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest

ビルドトリガーの自動化

CI/CDの強みは自動化にあります。Jenkinsでは、さまざまなイベントをきっかけに、これらのビルドジョブとプッシュジョブを自動的に開始できます。

  • SCM Polling:JenkinsがGitリポジトリを定期的に確認し、新しいコミットがないか調べます。
  • Webhooks:Gitプロバイダー(GitHub、GitLab、Bitbucket)が、コードがプッシュされるたびにJenkinsへ通知を送信します。
  • Upstream Projects:別のJenkinsジョブが正常に完了したときにトリガーされます。

Jenkinsジョブのテスト

ビルドステップとトリガーを設定したら、Jenkinsジョブを保存します。手動でビルドを開始してテストできます。Dockerイメージのビルドとプッシュが成功したことを、コンソール出力で確認してください。

実行が成功すれば、コードが変更されるたびにCIパイプラインで新しいDockerイメージを自動的に作成し、保存できるようになります。

簡単な確認

DockerイメージをビルドしてプッシュするJenkinsジョブを設定しました。Gitリポジトリには新しいコード変更があります。

まとめ:ビルドとプッシュ

よくできました。このレッスンでは、次の方法を学びました。

  • Dockerを操作できるようにJenkins環境を準備する。
  • JenkinsでDockerレジストリの認証情報を安全に管理する。
  • Dockerfileを使用してDockerイメージをビルドするJenkinsジョブを設定する。
  • 新しくビルドしたイメージをDockerレジストリにプッシュする。
  • 自動ビルドをトリガーするさまざまな方法を理解する。

これらの手順の自動化は継続的インテグレーションの重要な要素であり、継続的デリバリーへの基盤となります。

よくある質問

「JenkinsによるDockerイメージのビルド」レッスンは無料ですか?

はい。「JenkinsによるDockerイメージのビルド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「JenkinsによるDockerイメージのビルド」で何を学びますか?

コード変更時にDockerイメージを自動的にビルドし、レジストリへプッシュするようJenkinsジョブを設定します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「JenkinsによるDockerイメージのビルド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Jenkins入門
  2. JenkinsによるDockerイメージのビルド
  3. Jenkinsによるデプロイの自動化
  4. JenkinsfileによるJenkins Pipeline as Code
← DevOps Bootcampに戻る