VPSにCI環境を構築したくなったので、Jenkinsの公式Dockerイメージを使ってサクッと構築しました。

docker-compose.ymlを作る


下記のようなdocker-compose.ymlを作成します。実際に動作させているものはnginxコンテナからアクセスできるようにもう少しゴニョゴニョやってるんですけど、とりあえずJenkins単体で動かすなら以下でOKです。

1
2
3
4
5
6
7
8
version: '2'
services:
jenkins:
image: 'jenkins:2.46.2'
ports:
- "8080:8080"
volumes:
- './data:/var/jenkins_home'

公式のJenkinsのDockerイメージではコンテナ側の/var/jenkins_homeにJenkinsのデータが一式格納されています。ですので、そいつをvolumesで指定するだけで、データの永続化も完了します。上記のdocker-compose.ymlだとホスト側のdataというディレクトリにコンテナ内のJnekinsのデータ一式が格納されます。

1
2
3
.
|-- data //←ここにJenkinsデータ一式が入る
`-- docker-compose.yml

起動


これであとはdocker-compose up -dするだけです。

起動後にJenkinsにアクセスします。adminのパスワードを求められますので/secrets/initialAdminPasswordに記述されている値を入力します。前述のdocker-compose.ymlの例だとコンテナ内のデータはホスト側のdataディレクトリと紐づいているのでinitialAdminPasswordはホストOSの/data/secrets/ディレクトリ内にあります。

あとは良しなに進めるだけです。

adminのパスワードは?


前述のとおりinitialAdminPasswordに記載されているのがadminのパスワードです。最初にユーザを作成しなかったとしてもadmininitialAdminPasswordのパスワードでログインできます。

使い勝手


実は会社では1ヶ月くらい前から同じく公式のDcokerイメージを使って構築したJenkinsを動かしてます。まあ、基本は問題なく使えるのですが…

  • 実行環境(例えばRubyのテストをするにはRubyの実行環境がいりますよね…)を準備するのが手間(いちいちコンテナに潜り込んでインストール)
  • コンテナに潜り込んでインストールするにもちょっと詰まったり
  • ホストOSの資産(スクリプトなど)を使おうと思うと、マウントさせるか、sshリモートコマンド実行する必要があったり…

などなど、ホストOSに直接インストールするのに比べたらやはりめんどくさいものの、サックリ構築できるのはいい点かなぁと思います。