こんにちは!開発現場の自動化を進める上で、心強い相棒となってくれるCI/CDツールといえば、やっぱり「Jenkins(ジェンキンス)」ですよね。
「名前は聞いたことあるけれど、環境構築が難しそう…」
「サーバーを立てて、Javaを入れて、設定ファイルをこねくり回して……って面倒くさそう」
そんな風に思っていませんか?ご安心ください。
今回は、Dockerの力を借りて、わずか10分で完全にクリーンかつ実用的なJenkins環境を立ち上げる方法を、僕が優しく丁寧にお伝えします。
これをマスターすれば、面倒なミドルウェアの依存関係に悩まされることなく、いつでもどこでも自分の手元に最強の自動化サーバーを用意できるようになりますよ。毎日の手動デプロイやテスト実行の地獄から、一緒に抜け出しましょう!
—
1. Jenkinsってそもそも何をするもの?
一言で言えば、Jenkinsは「あなたの代わりに24時間働いてくれる、超優秀な作業ロボット」です。
例えば、こんな面倒な作業をすべて自動化してくれます。
- GitHubにコードがプッシュされたら、自動でビルドする
- 単体テスト(ユニットテスト)を走らせて、バグがないかチェックする
- テストが通ったら、自動で本番サーバーやステージング環境にデプロイする
- Slackに「ビルド成功しました!」「テストが失敗しました!」と通知する
人間がやるとミスをするし、何より時間がかかる作業を、Jenkinsにすべてお任せしてしまう。これがCI/CD(継続的インテグレーション/継続的デリバリー)の醍醐味です。
—
2. なぜDockerでJenkinsを動かすのか?
昔は、Jenkinsを動かすために専用のLinuxサーバーを用意し、Javaのバージョンを合わせて……と大変でした。しかし、現代のベストプラクティスは「Dockerコンテナでの実行」です。
- 環境汚染ゼロ: ホストOS(あなたのPCやクラウドサーバー)を汚さない。不要になったらコンテナを消すだけでキレイさっぱり。
- 再現性の高さ: 「私のローカルでは動くのに、サーバーだと動かない」というエンジニアあるあるの絶望を完全に防げます。
- 爆速のセットアップ: コマンド一発で、秒で環境が手に入ります。
今回は、公式の安定版(LTS)イメージをベースにしつつ、実務で即座に使えるようにカスタマイズした環境を作り上げましょう。
—
3. 【実践】最短10分でJenkins環境を構築するステップ
それでは、手を動かしていきましょう!作業は以下の3ステップです。
1. 作業ディレクトリとDockerfileの作成
2. Docker Composeで一発起動
3. 初期セットアップとプラグインの導入
ステップ1:Dockerfileとdocker-compose.ymlの作成
適当な作業用フォルダ(例: `jenkins-env`)を一つ作り、その中に以下の2つのファイルを作成してください。
① `Dockerfile`
公式のJenkinsイメージに、Docker CLIを同梱させます。なぜなら、Jenkinsのパイプラインの中で「Dockerイメージのビルド」を行いたいケースが実務では多々あるからです。
LTS(長期サポート)版の公式イメージを採用
FROM jenkins/jenkins:lts-jdk17
rootユーザーに切り替えて、Docker CLIをインストールする準備
USER root
必要に応じて開発ツールのインストール(今回はCURLとgit)
RUN apt-get update && apt-get install -y \
curl \
git \
&& rm -rf /var/lib/apt/lists/
Jenkinsユーザーに戻す(セキュリティ上のベストプラクティス)
USER jenkins
② `docker-compose.yml`
Dockerコンテナの構成を定義します。データ永続化のためのボリューム設定もここで行います。
version: ‘3.8’
services:
jenkins:
build: .
container_name: my-jenkins-server
restart: always
ports:
- “8080:8080” # Web UIへのアクセスポート
- “50000:50000” # エージェント(スレーブ)接続用ポート
volumes:
- jenkins_data:/var/jenkins_home # ジョブの設定やビルド履歴を永続化
- /var/run/docker.sock:/var/run/docker.sock # ホストのDockerを利用できるようにする(Docker-in-Dockerの代わり)
user: root # 権限トラブルを防ぐためルートで実行(検証用。本番では適切なグループ権限を付与してください)
volumes:
jenkins_data:
driver: local
ステップ2:Docker Composeで起動!
ターミナル(コマンドプロンプトやiTermなど)を開き、作成したファイルがあるディレクトリに移動して、以下の魔法の呪文を唱えてください。
docker-compose up -d
たったこれだけです!Dockerが自動でイメージのビルドとコンテナの起動を行ってくれます。
ログを確認したい場合は、`docker-compose logs -f` を実行してみてください。数秒で起動が完了します。
—
4. 初回起動時のセキュリティ設定とアンロック
ブラウザを開き、`http://localhost:8080` にアクセスしてみましょう。
おなじみの「Unlock Jenkins」という画面が表示されるはずです。
ここから、セキュリティのための初期設定を行います。
① 管理者パスワードの入力
画面に「Please enter the password indicated below」と書かれたパスワードの入力欄があります。このパスワードは、コンテナの中に安全に隠されています。
以下のコマンドをターミナルで実行して、パスワードを表示させましょう。
docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
表示された長い英数字の文字列をコピーし、ブラウザの入力欄にペーストして「Continue」を押します。
② プラグインのインストール
次に「Customize Jenkins」という画面になります。
ここは迷わず、「Install suggested plugins(推奨プラグインのインストール)」をクリックしてください。
Git連携、Pipeline、セキュリティ管理など、現場で絶対に必要なプラグインを一式、自動でインストールしてくれます(数分かかりますので、コーヒーでも飲みながら待ちましょう)。
③ 管理者ユーザーの作成
プラグインのインストールが終わると、「Create First Admin User」という画面になります。
- Username(ユーザー名)
- Password(パスワード)
- Confirm password(パスワード確認)
- Full name(フルネーム)
- E-mail address(メールアドレス)
これらを適切に入力し、「Save and Finish」をクリックします。
最後に「Jenkins is ready!」と表示されたら、「Start using Jenkins」をクリック!
おめでとうございます!これであなたのローカル環境に、プロ仕様のJenkinsサーバーが立ち上がりました。
—
5. 精度高い「Hello World」!最初のジョブを作ってみよう
せっかくなので、ちゃんと動くかどうか、世界で一番簡単なジョブを作って動作確認をしてみましょう。これがあなたにとっての「HelloWorld」になります。
1. Jenkinsのトップ画面左側にある「新規ジョブ作成(New Item)」をクリック。
2. ジョブ名に `hello-world-job` と入力。
3. 一覧から「フリースタイル・プロジェクト(Freestyle project)」を選択し、一番下の「OK」をクリック。
4. ジョブの詳細設定画面が開いたら、一番下までスクロールし、「ビルド(Build)」セクションの「ビルド手順の追加(Add build step)」から「シェルの実行(Execute shell)」を選択。
5. コマンド入力欄に、以下のスクリプトを書き込みます。
echo “==========================================”
echo ” Hello, Jenkins! 自動化の世界へようこそ!”
echo ” 現在の時刻: $(date)”
echo “==========================================”
6. 画面一番下の「保存(Save)」ボタンを押す。
7. ジョブの管理画面に切り替わるので、左メニューの「ビルド実行(Build Now)」をクリック!
結果の確認
左側の「ビルド履歴(Build History)」に、青い丸(または点滅しているアイコン)が出てきます。
ビルドが完了したら、その履歴(例: `#1`)をクリックし、「コンソール出力(Console Output)」を覗いてみてください。
そこに、先ほど書いたシェルスクリプトの実行結果がバッチリ出力されていれば大成功です!
—
おわりに:ここから始まる自動化の旅
お疲れ様でした!Dockerを使って最短でJenkinsを立ち上げ、実際にジョブを動かすところまで完了しました。
これをマスターすれば、今後はどんなプロジェクトに配属されても、自分専用のCI/CD環境を数分で用意できるようになります。「面倒な手作業はすべてコードと自動化ツールに任せる」というDevOpsのエンジニアリングマインドを、ぜひ今日からあなたの武器にしてください。
次回は、このJenkinsを使って「GitHubと連携した本格的なCI/CDパイプライン(Jenkinsfile)の書き方」を解説する予定です。
これをマスターすれば、毎日の開発作業が劇的に楽になりますよ。それではまた次の記事でお会いしましょう!