はじめに
Jenkinsをコンテナで構築していると、アクセスログを有効化したい...等カスタムしたくなるかと思います。
私自身dockerでの変更の仕方に若干手間取ったので、忘れない様、備忘録として投稿します。
dockerを使ったJenkinsの構築方法は以下。
DockerコンテナでJenkinsを構築
-eオプションで環境変数を設定してあげることで大体は設定できるっぽいです。
プレフィックスをつける
mysite.com/jenkins などのプレフィックスが付いたリバース プロキシの背後に Jenkins をインストールする場合は、環境変数を追加します。
JENKINS_OPTS="--prefix=/jenkins"
docker run -d --name jenkins -e JENKINS_OPTS="prefix=/jenkins" -p 8080:8080 --restart=on-failure -v jenkins:/var/jenkins_home jenkins/jenkins:lts-jdk17
アクセスログを有効化する
アクセスログを有効にするには、JENKINS_OPTS環境変数の値を以下のように設定します。
--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/jenkins_home/logs/access_log
docker run -d --name jenkins -e JENKINS_OPTS="--accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/jenkins_home/logs/access_log" -p 8080:8080 --restart=on-failure -v jenkins:/var/jenkins_home jenkins/jenkins:lts-jdk17
アクセスログが有効化できました。
ログの出力先を買えたい場合は「--simpleAccessLogger.file=」の値を変更すれば、任意のパスに出力できます。
root@77f1bb9ad9a5:# ls -l /var/jenkins_home/logs/
total 4
-rw-r--r--. 1 jenkins jenkins 3063 Feb 1 12:00 access_log
drwxr-xr-x. 2 jenkins jenkins 35 Feb 1 08:02 tasks
root@77f1bb9ad9a5:#
root@77f1bb9ad9a5:#
root@77f1bb9ad9a5:# cat /var/jenkins_home/logs/access_log
192.168.75.1 - - [01/Feb/2024:12:00:15 +0000] "POST /widget/ExecutorsWidget/ajax HTTP/1.1" 500 4833 "http://192.168.75.129:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
~
192.168.75.1 - - [01/Feb/2024:12:00:47 +0000] "GET /login HTTP/1.1" 200 787 "http://192.168.75.129:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
192.168.75.1 - - [01/Feb/2024:12:00:47 +0000] "GET /static/6fbb23e3/favicon.ico HTTP/1.1" 200 17542 "http://192.168.75.129:8080/login?from=%2F" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
root@77f1bb9ad9a5:#
JENKINS_HOMEの値を変更する
JENKINS_HOMEを変更する場合は変数に以下を設定します。
JENKINS_HOME="<任意のパス>"
-vオプションを使用している場合は、コンテナ側のパスも併せて変更してください。
※変数を指定しなかった場合のデフォルトJENKINS_HOMEは/var/jenkins_home
です。
docker run -d --name jenkins -e JENKINS_HOME="/var/lib/jenkins_home" -p 8080:8080 --restart=on-failure -v jenkins:/var/lib/jenkins_home jenkins/jenkins:lts-jdk17
JENKINS_HOMEの値が変わりました。
root@b6c711d4d324:/# printenv | grep JENKINS_HOME
JENKINS_HOME=/var/lib/jenkins_home