省電力CPUですら、マルチコアが当たり前な今の時代。Docker上でもサクサク動く。外部公開しないなら、Dockerがお勧め。
インフラも含めてアプリ化されている感じで楽。
(個人的にはしないけど)外部公開する場合は…Jenkinsに限らず、Dockerがファイアウォールを回避する形でポートに穴を開けまくるので、nginxなどのリバースプロキシやインターネット接続用にNATなど、ゲートを設けておく。
タスクリスト
- イメージをカスタマイズして取得する
- イメージを取得する
- コンテナを起動する
- 初回のログインをする
イメージをカスタマイズして取得する
デフォルトの設定を変えたい場合はDockerfileに書いておく。
変えなくて良いなら、ここはスキップで良い。
FROM jenkins/jenkins:<TAG> ENV JENKINS_SLAVE_AGENT_PORT <PORT>
https://github.com/jenkinsci/docker/blob/master/README.md
Jenkinsは分散ビルドができるので、Jenkinsそのもの(マスター)ではなく、ビルドするノード(スレーブ)の都合も考えながら決める。
TAGはltsかlts-jdk11でよい。
ltsはJDK8ベース、lts-jdk11はJDK11ベース。
選ぶ基準としては、スレーブ側がJDK8を使うかどうか。
使う場合はltsを選ぶ。
lts-jdk11を使った場合、スレーブ(agent.jar)を起動する段階でUnsupportedClassVersionErrorが発生する。
JENKINS_SLAVE_AGENT_PORTはデフォルトの50000から変える場合は書く。
その後、ビルド。
docker build -t <TAG> <PATH>
PATHはDockerfileの場所。カレントなら./で良い。
TAGはjenkins:ltsなど、後から分かるように付けておく。
公式にjenkinsがあったりするけど、廃止されているので被っても気にする必要はない。
イメージを取得する
設定を変えずに、そのまま使いたい場合。
カスタマイズして取得している場合はスキップで良い。
docker pull jenkins/jenkins:<TAG>
TAGはカスタマイズと同じくスレーブ都合で選ぶ。
コンテナを起動する
docker run -d --name <NAME> -p <HTTP PORT>:8080 -p <SLAVE PORT>:<SLAVE PORT> <IMAGE ID>
NAMEはコンテナの名前。jenkins-1など任意で。
HTTP PORTは接続ポート番号。Docker内で8080に変換される。
http://<IP>:12345/にアクセスした場合に接続できるようにしたい場合は、-p 12345:8080を指定する。
SLAVE PORTはデフォルトなら50000、カスタマイズしていた場合はそのポート番号を入力。
初回のログインをする
初期パスワードは起動時ログの*が大量に出ているあたりに書いてある。
docker logs <CONTAINER ID>
またはコンテナに入って中身を表示。
docker exec -it <CONTAINER ID> /bin/bash cat /var/jenkins_home/secrets/initialAdminPassword
初期パスワードはインストール後、削除される模様。
これ以降はDockerならではの要素がないので、ここまで。