GitBucket の永続的な運用環境を Docker でつくってみるメモ。CoreOS 使っています。
イメージ作成
GitBucket が Scala 製 web アプリケーションということで、Tomcat の公式イメージを元に GitBucket のイメージを作ることにします。
core@coreos ~ $ docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementa... 56 [OK]
Dockerfile 作成
Dockerfile
は下記のような感じ。
Dockerfile
FROM tomcat:8-jre8
MAINTAINER Yu I. <yu.inao@facebook.com>
ENV GITBUCKET_HOME /var/gitbucket
RUN rm -rf /usr/local/tomcat/webapps/ROOT
ADD https://github.com/takezoe/gitbucket/releases/download/2.7/gitbucket.war /usr/local/tomcat/webapps/ROOT.war
VOLUME /var/gitbucket
EXPOSE 8080 29418
CMD [ "/usr/local/tomcat/bin/catalina.sh", "run" ]
これを適当なディレクトリの中に保存します:
gitbucket/
└── Dockerfile
ビルド
ビルドしてイメージを作成します:
docker build -t japboy/gitbucket:2.7 ./gitbucket/
確認
ビルドが完了したらホストのイメージ一覧に追加されているのを確認します:
core@coreos ~ $ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
japboy/gitbucket 2.7 1b4270aac1cc 27 minutes ago 368 MB
コンテナ実行
GitBucket サーバーをバックグランドコンテナとして起動します。
docker run -d -P -v /media/volume/gitbucket:/var/gitbucket japboy/gitbucket:2.7
-
-v
でデータボリューム/var/gitbucket
をホストの/media/volume/gitbucket
に割り当てている。 - CoreOS 側で
/media/volume
に NFS で NAS をマウントしてデータの永続化を行なうようにしている。
ホストに割り当てられたポート番号をプロセス一覧から確認します:
core@coreos ~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5f5b141841b9 japboy/gitbucket:2.7 "/usr/local/tomcat/b 29 minutes ago Up 29 minutes 0.0.0.0:49159->8080/tcp romantic_bartik
これだと 49159
が公開ポートとして割り当てらています。
あとは web ブラウザから GitBucket にアクセスします。アドレスは上記ポート番号を指定して下記のような感じです:
http://192.168.0.98:49159/
データコンテナで永続化しようと思ったけど、あんまりポータビリティ高くなさそうなので、CoreOS で NFS をマウントして、それをデータボリュームに割り当てる事にした。