gitolite3をDocker on CentOS7で動かす

yumからgitolite3をインストールして使いはじめるまで,だいぶはまってしまったのでメモ.

とりあえず,Dockerを起動してyumでインストール.

  • pでホストの22222番ポートをコンテナの22番に割り当て(ssh用),-vでディレクトリの共有をして,リポジトリのデータをホスト側に保存するようにしてみた.
(↓ホストのCentos7のシェル↓)
[USER]$ sudo docker run -it -p 22222:22 -v /home/USER/gitolite3:/var/lib/gitolite3 centos /bin/bash

(↓Dockerコンテナ内↓)
[root]# yum install -y epel-release
[root]# yum install -y gitolite3
[root]# cat /etc/passwd
...
gitolite3:x:999:998:git repository hosting:/var/lib/gitolite3:/bin/sh

インストールすると,gitolite3ユーザ($HOME=/var/lib/gitolite3/)が自動で作成されている.


ここでいったん,sshdを使うための設定をする.
host keyは,http://blog.glatts.com/blog/imai/?p=949:/etc/init.d/sshd start処理内で自動生成されているらしい.
/etc/init.d/sshdが無いので,自分で生成してみる.

(↓Dockerコンテナ内↓)
[root]# yum install -y openssh-server
[root]# cd /etc/ssh
[root]# ssh-keygen -t rsa -f ssh_host_rsa_key
[root]# ssh-keygen -t rsa -f ssh_host_ecdsa_key


ホスト側でssh-keygenで用意した公開鍵(test.pub)を,コンテナ側のgitolite3のadmin鍵として登録する.
gitolite setup後,sshdを立ち上げてセットアップ完了.

(↓Dockerコンテナ内↓)
[gitolite3]$ gitolite setup -pk test.pub
Initialized empty Git repository in /var/lib/gitolite3/repositories/gitolite-admin.git/
Initialized empty Git repository in /var/lib/gitolite3/repositories/testing.git/

[root] /usr/sbin/sshd -D &


ホスト側からgitoliteの動作を確認してみる.

[ksuzuki@tk2-231-25171 ~]$ ssh -i ~/.ssh/test gitolite3@127.0.0.1 -p 50022
Enter passphrase for key '/home/ksuzuki/.ssh/test':
PTY allocation request failed on channel 0
hello test, this is gitolite3@aaa running gitolite3 3.6.2-1.el7 on git 1.8.3.1

 R W    gitolite-admin
 R W    testing
Connection to 127.0.0.1 closed.

以上で完了.
ここまでで作ったDockerコンテナをcommitして,
docker run -d --name gitolite-run -p 50022:22 -v /home/USER/gitolite3:/var/lib/gitolite3 gitolite /usr/sbin/sshd -D
とかで実行できる.


ちなみに,はまったところは,gitolite setup -pk test.pubしたときに,
WARNING: keydir/admin.pub duplicates a non-gitolite key, sshd will ignore it
のワーニングが出てたのを無視していたら,ホストから動作確認のsshをした時に,
gitレポジトリが表示されず普通に,ログインしてしまったこと.
これは,gitolite setupをする前に,test.pubをコンテナ側のauthorized_keysに登録していたことが原因だった.
このエラーが出たら,authorized_keysの中身を見て,すでに登録してあるtest.pubを消去すれば,動いた.


下記のサイトは,gitolite3をgithubからcloneしてインストールしている.

公式:install and setup
http://gitolite.com/gitolite/install.html

How to setup Gitolite and Cgit on CentOS 6 | Patrick's Blog(2)
http://blog.laimbock.com/2013/10/15/how-to-setup-gitolite-and-cgit-on-centos-6/