f99aq8ove's blog

Docker で GitBucket を立てて遊んでみた

tag: docker and gitbucket
07 May 2014

このエントリは 2014-05-07 に書かれました。 内容が古くなっていたり、もはや正しくないこともありますので、十分検証を行ってください。

連休を使って docker で遊んでましたので、 簡単な使い方などなどを書いてみます。

本記事での目標は、docker 上で GitBucket を 動かしてみることです。 ちなみに、GitBucket は Scala で書かれている Github クローンです。

それでは始めていきましょう。

docker setup

今回は、Ubuntu 14.04 (x86_64) な環境を用意しました。 32 bit 版は docker がサポートしていないので注意です。

% uname -a
Linux raptor 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

おもむろに docker をインストールして、シンボリックリンクを張ります。 (予め universe リポジトリを追加しておくこと。)

% sudo aptitude install docker.io
% sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

これで、docker 自体は動くようになったはずです。早速実行してみましょう。

raptor% sudo docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
5e019ab7bf6d: Download complete
316b678ddf48: Download complete
3db9c44f4520: Download complete
74fe38d11401: Download complete
99ec81b80c55: Download complete
a7cf8ae4e998: Download complete
511136ea3c5a: Download complete
6cfa4d1f33fb: Download complete
f10ebce2c0e1: Download complete
ef519c9ee91a: Download complete
02dae1c13f51: Download complete
5e66087f3ffe: Download complete
e2aa6665d371: Download complete
07302703becc: Download complete
f0ee64c4df74: Download complete
e7206bfc66aa: Download complete
82cdea7ab5b5: Download complete
cf8dc907452c: Download complete
2209cbf9dcd3: Download complete
cb12405ee8fa: Download complete
5dbd9cb5a02f: Download complete
4d26dd3ebc1c: Download complete
d4010efcfd86: Download complete
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
root@40c1685199e5:/#

おめでとうございます。 docker リポジトリからイメージがダウンロードされて、ちゃんと動きました。

DNS 警告対策

ここで、上記のように DNS の警告が出た場合(Ubuntu desktop 版だと出て、server 版では出ない)は、 "/etc/default/docker.io" の以下の部分を

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4"

以下の感じで自分のネットワークの設定に合わせて

DOCKER_OPTS="-dns 10.0.1.1"

以下のようにサービスを再起動すれば OK です。

% sudo service docker.io restart

Non-root access

いちいち sudo するのはあれなので、docker を一般ユーザーで実行できるようにします。

以下のようにして、docker を実行したいユーザーを docker グループに入れて、 サービスを再起動してあげます。

% sudo gpasswd -a ${USER} docker
% sudo service docker.io restart

当該ユーザーでログインしなおせば、sudo 無しで実行できるようになっているはずです。

% docker run -i -t ubuntu /bin/bash

とまぁ、ここまでの話は 本家のドキュメント に載っています。

GitBucket setup

それでは、本題の GitBucket setup に移っていきましょう。

docker は、上述のように bash を実行してコンテナ内をイジってイメージを作成することも 出来ますが、ここでは Dockerfile を使います。

Dockerfile はイメージの作成手順を記載するファイルです。 一度 Dockerfile に手順を書き出してしまえば、何度でも同じようにイメージを作成できるというわけです。

GitBucket image の作成

完成した Dockerfile がこちらになります。 https://github.com/f99aq8ove/docker-gitbucket/blob/master/Dockerfile

Github に公開されている Dockerfile からは、以下のようにして イメージを作成することが出来ます。

% docker build github.com/f99aq8ove/docker-gitbucket
(snip)
Step 9 : CMD ["java", "-jar", "/opt/gitbucket.war"]
 ---> Running in 9a9f6e8fdd1e
 ---> 515eb4f673cc
Successfully built 515eb4f673cc
Removing intermediate container 3dbf5b9efcf8
Removing intermediate container 9a9f6e8fdd1e

最後付近に出力されている 515eb4f673cc が、作成されたイメージの ID になっています。 これを起動してみます。

% docker run -d -p 8080:8080 -v ${PWD}/gitbucket-data:/gitbucket 515eb4f673cc
03047f2969d1ebe541d5f28c3a7ac08ec413231b1569ed13e850bb43646a006a
% docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
03047f2969d1        515eb4f673cc        java -jar /opt/gitbu   5 seconds ago       Up 5 seconds        0.0.0.0:8080->8080/tcp   dreamy_davinci

はい。無事に実行されました。 http://localhost:8080/ にアクセスすると、GitBucket が見えるはずです。 また、GitBucket のデータは "docker run" したディレクトリに gitbucket-data ディレクトリが作成されて、そこに出力されます。

GitBucket image をリポジトリに登録しました

ところで、docker には、イメージを公開・共有するリポジトリという機能があります。

リポジトリへの公開方法は公式ドキュメント( http://docs.docker.io/use/workingwithrepository/ )が あるので割愛しますが、上記のイメージを f99aq8ove/gitbucket として登録しておきました。 ですので、以下コマンドを実行するだけで gitbucket 環境を手に入れることが可能です。

% docker run -d -p 8080:8080 -v ${PWD}/gitbucket-data:/gitbucket -P f99aq8ove/gitbucket

なお、ポートを変えたい場合は "-p 8080:8080" の部分を "-p <port to use>:8080" に、 データ保存先を変えたい場合は "-v ${PWD}/gitbucket-data:/gitbucket" の部分を "-v path/to/data dir:/gitbucket" に変更すれば OK です。

Related Posts