Jenkins 導入¶
created at 2019-08-19 17:47+0900
Jenkins とは、テストやらビルドやらデプロイやらの自動化をお手伝いしてくれる執事さん。カッチョよく言うと継続的インテグレーションツール。
以下、Jenkinsの導入手順についての覚書。
docker-composeファイル作成¶
次のようにdocker-compose.ymlファイルを作成する。
version: '3.7'
services:
jenkins:
image: jenkinsci/blueocean
container_name: jenkins
environment:
- VIRTUAL_HOST=jenkins.r-square.net
- VIRTUAL_PORT=8080
expose:
- 8080
- 50000
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/docker.d/jenkins/data:/var/jenkins_home
logging:
driver: journald
networks:
- common_link
restart: always
networks:
common_link:
external: true
docker hub にはjenkinsイメージが何種類かあってややこしい。
jenkins -> Docker オフィシャルイメージ。しかしもう中の人が飽きてしまったらしい。
jenkins/jenkins:lts -> これ推奨らしい。
jenkinsci/blueocean -> GUIでパイプライン作れちゃうらしい。
networksのcommon_linkと環境変数VIRTUAL_HOST,VIRTUAL_PORTはnginx-proxyに転送してもらうための設定。
/etc/localtimeはコンテナ内のタイムゾーンをホスト側へ合わせるための設定。
コンテナ内の/var/jenkins_homeにjenkins関係のデータがモリモリ作られるので、ホスト側(/var/docker.d/jenkins/data)へつなぐ。
loggingドライバーはお好みで設定。
ホスト側のJenkinsディレクトリの権限設定¶
jenkinsコンテナ内ではuid:1000,gid:1000で実行されているので、ホスト側のJenkinsディレクトリのパーミッションを同じuid,gidにしておく。(そうしないとjenkinsの起動に失敗する。)
sudo chown 1000:1000 /var/docker.d/jenkins/data
まとまらないまとめ¶
Jenkinsさんは「ホスト側ディレクトリのパーミッションを変更したくなければ自分でDockerfile書けばいいじゃない」って言うスタンスなんだろうなあ。