※ 7/31 GitBucketを自作イメージに変更しました。
ツイートでGitBucketとJenkinsを一発で立ち上げたいけどやる気が起きない...
というのを見かけたので、Docker猛勉強中の私が頑張ってやってみました。ちなみにDockerfileをAnsible+Packerで置き換えられないかと挑戦していますが厳しいです。素直にDockerfileやります...
もともとGitBucketが好きでScala勉強していますがまだまだ貢献できそうにないので、少しでもお役に立てれば幸いです。
ソースはGithubにあります。
環境
- macOS Sierra 10.12.6
- Docker 17.06.0-ce, build 02c1d87
- docker-compose 1.14.0, build c7bdf9e
構成
以下の3コンテナで運用します。ベースは全てAlpine Linuxです。
- GitBucket本体 (Version 4.14.1)
- GitBucket用DB (PostgreSQL 9.5)
- Jenkins (Version 2.60.2)
検討したこと
どのイメージを使うか
GitBucketは起動時にDBへ接続できないとエラーで終了してしまうので、自作しました。
現在はPostgreSQLとMySQLをサポートし、DBが起動するまで待機するスクリプトを配置しています。
PostgreSQLとJenkinsは公式を使っています。
データ置き場
データ専用コンテナを用意するか迷いましたが、docker-compose rm
で消してしまうかもしれないので、ホストディレクトリにマウントしています。
docker-compose.ymlと同階層にvolumesディレクトリを作り、各コンテナの重要データは全てそこに置くようにしました。
Nginxリバースプロキシ
GitBucketとJenkinsが共に8080ポートを使用するため、Jenkinsを8081に変更しています。
下記コンテナと使うと簡単に常時SSL化ができたのでオススメです。
使い方
まずソースを取ってきます。
git clone https://github.com/shomatan/gitbucket-jenkins-docker-compose
あとは
docker-compose up -d
するだけです。
数分すると各URLにアクセスできます。
- GitBucket http://localhost:8080
- Jenkins http://localhost:8081
GitBucketは ID:root
PW:root
で、
Jenkinsはコンテナのログに初期ログイン用のパスワードが紛れてますので入力します。
2017-06-01T06:28:34.970840638Z
*************************************************************
*************************************************************
*************************************************************
2017-06-01T06:28:34.970851647Z
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
2017-06-01T06:28:34.970888248Z
e88e0932068b43438151e06a65ff4e5c <- ////////// これ! //////////
2017-06-01T06:28:34.970893099Z
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
2017-06-01T06:28:34.970899129Z
*************************************************************
*************************************************************
*************************************************************
やり残したこと
- Jenkins起動時にGitBucket用のプラグインをインストール
- docker-compose.ymlでネットワークを定義してみる
終わりに
既にあるDockerイメージで簡単に構築できました