なんとなくは理解していたつもりですが、JenkinsのビルドをDockerコンテナ内で実行する方法を改めて調査しました。環境構築手順と合わせてまとめ記事にしました。
「Jenkins」タグの記事が2件件あります
全てのタグを見るJenkinsを起動するDocker Composeがこちらです
過去にQiitaに投稿した内容のアーカイブです。
今日わかったこと
- Docker Hubの
Official Image
のJenkinsはDEPRECATED。代わりにjenkins/jenkins:lts
を使ってねとのこと - 公式サイトには以下の記載あり。
The recommended Docker image to use is the Official jenkins/jenkins image (from the Docker Hub repository). This image contains the current Long-Term Support (LTS) release of Jenkins (which is production-ready). However this image doesn’t have docker CLI inside it and is not bundled with frequently used Blue Ocean plugins and features. This means that if you want to use the full power of Jenkins and Docker you may want to go through described below installation process.
DeepL翻訳
使用する推奨Dockerイメージは、Official jenkins/jenkinsイメージ(Docker Hubリポジトリより)です。このイメージには、Jenkinsの現在のLong-Term Support(LTS)リリースが含まれています(これは本番環境に対応しています)。しかし、このイメージにはdocker CLIが内蔵されておらず、頻繁に使用されるブルーオーシャンのプラグインや機能がバンドルされていません。つまり、JenkinsとDockerのパワーをフルに使いたい場合は、以下のようなインストール手順を踏むことになるでしょう。
JenkinsとDockerのパワーをフルに使う
方法をDocker Composeで試したので、その時のログを残します。
作業ログ
mkdir ~/jenkins-docker
cd ~/jenkins-docker/
FROM jenkins/jenkins:2.303.2-jdk11
USER root
RUN apt-get update && apt-get install -y apt-transport-https \
ca-certificates curl gnupg2 \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
"deb [arch=arm64] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable"
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.25.0 docker-workflow:1.26"
※注:Raspberry Pi 4で試したので[arch=arm64]
になってますが、多くの場合は[arch=amd4]
だと思います。
version: '3.9'
services:
docker:
image: docker:dind
privileged: true
networks:
- jenkins-network
environment:
DOCKER_TLS_CERTDIR: /certs
volumes:
- ./jenkins-docker-certs:/certs/client
- ./jenkins-data:/var/jenkins_home
expose:
- "2376"
jenkins-blueocean:
build: .
depends_on:
- docker
networks:
- jenkins-network
environment:
DOCKER_HOST: "tcp://docker:2376"
DOCKER_CERT_PATH: /certs/client
DOCKER_TLS_VERIFY: 1
expose:
- "8080"
- "50000"
ports:
- "8080:8080"
- "50000:50000"
volumes:
- ./jenkins-docker-certs:/certs/client:ro
- ./jenkins-data:/var/jenkins_home
networks:
jenkins-network:
driver: bridge
mkdir jenkins-data
mkdir jenkins-docker-certs
docker compose up -d
しばらくすると、Jenkinsが起動し、8080ポートで接続できます。
Administrator password
はログに出ているので、docker compose logs
で確認しましょう。
あとはこんな感じです。