Docker ComposeでMySQLとnginxで動くGitBucketを作りました。

リポジトリは下記です。
docker-gitbucket-orchestration

なんでつくったん?


自分向けにVPS上で動かすためです。いやね~GitBucket用のDockerイメージって探したらあるんですけど、nginx + MySQLでやりたかたんですよ。

構成


前提


当然ですが、DockerとDocker Composeはインストールしてください。Docker Composeは1.6以上で動作します。

インストールと実行


まず初めにgitbucket/gitbucket/war_download.shgitbucket.warをダウンロードします。その後docker-compose up -dで起動します。

以上。メッチャ簡単。

設定


nginxの設定はnginx.confで設定できるようにしています。MySQLは…設定できるようにはしてない…そのうちやろうと思います。そのうち…ね。
MySQLも一応できるようにしました。/gitbucket/mysql/config/etc/conf.d/mysql_custom.cnfを変更してください。

その他の設定はdocker-compose.ymlでできます。Dockerの知識が必要になります。と言ってもyamlなので見たら大体わかると思います。

pushできねえ…


pull(fetch)はできるけど、push出来ない場合はnginxのアップロードサイズの問題だと思います。nginxのデフォルトではアップロードできるサイズが決まっているのでnginx.confclient_max_body_sizeを変更して調整してください。

バックアップ


backup.shを実行してください。データベース丸ごととgitbucketのデータ丸ごとがtar形式でbackupsディレクトリ内に日付 + 時間別で作成されます。下記のような感じです。

1
2
3
4
5
.
|-- backups
| `-- 20170227
| |-- 214142_gitbucket_data.tar
| `-- 214142_gitbucket_mysql.tar

バージョンアップ


バックアップ実行後に、新しいバージョンのgitbucket.wargitbucket/gitbucket/warに格納してください。
その後docker-compose buildで再度ビルドした後にdocker-compose up -dで起動します。

特に何もしなくてもデータはそのまま移行されます。上記の手順で4.9から4.10のバージョンアップが完了したのを確認しています。

作るにあたって詰まったところ


こちらの記事を見るまで MariaDBでは動作しない ということに気が付かず、MariaDBで動作させようと頑張ってました…結果、コードを弄らないと動かないようで諦めてMySQLにしました。あとは、JDBCのURLにコロンが抜けていて気が付かずに1時間くらい迷ったとか、ホスト側からマウントさせた際に思った通りマウントしてくれなかったりとか、Java9だと動かなくてベースのイメージをJava8に下げたとか…

その他


これで、マイVPS上でprivateリポジトリが作り放題です!GitHubにアップできないのとかpushしマクリスティですね!やったね!
あとはバックアップのスクリプトとかが必要なので作らないといけないなぁ…と思ってます。そのうち作ります…そのうちね… 前述の通り作成済みです。