やること
さっそく(今度こそ)手軽なDockerの環境が出来たので、勉強がてらに何か入れてみます。
今回は、Stashから変わったばかりの、bitbucket-serverを上げてみることにしました。
イメージの取得
Docker Hubにはatlassian公式のものも含め、Atlassian製品がいくつか上がっています。
今回の利用はこちらから。
% docker pull atlassian/bitbucket-server # しばらく待つ
# 持って来れました!
% docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
atlassian/bitbucket-server latest e1065872791c 6 days ago 763.5 MB
hello-world latest 8889088cb38d 9 weeks ago 960 B
コンテナ内とDokerホスト内のディレクトリを共有
イメージが取得できたので、ドキュメントに従って、dockerコンテナの操作を行います。
この操作は行わなくてもいいのですが、コンテナやイメージ削除の際にせっかくコミットしたリポジトリのデータも消えてしまうと残念です。
ということで、docker コンテナ内でBitbucket Serverのデータが書き出されるディレクトリを、Dockerホスト側のディレクトリにマウントさせて、データの保全を計るため、このおまじないをかけます。
# Dockerホストにマウント & パーミッション変更
% docker run -u root -v /data/bitbucket:/var/atlassian/application-data/bitbucket atlassian/bitbucket-server chown -R daemon /var/atlassian/application-data/bitbucket
Dockerホスト側は?
この時点で、Dockerホスト(boot2docker) 側の /data/bitbucket フォルダが出来ています。
Dockerのコンテナが止まったり、コンテナ&イメージが削除されてしまっても、boot2docker側のフォルダにデータが残ることになります:)
% docker stop ...Bitbucket ServerコンテナのID....
% docke-machine ssh default # Dockerホスト内にssh
# ここからはDockerホスト内部(boot2docker)
docker@default:/data/bitbucket$ ls -F
analytics-logs/ bin/ caches/ export/ lib/ log/ plugins/ shared/ tmp/
Bitcuekct Server起動します!
データの欠損はひとまず心配しなくてよさそうなので、早速起動してみます。
必要なものは入っている状態なので、ドキュメントに従って、起動させます。
# Macのターミナル上から
# Daemonモードでプロセス起動
% docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server
adaa96da2820d55e2d473c4ed72e00d7c1c2111dd4da07e87caa65dc8d1b058c
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
adaa96da2820 atlassian/bitbucket-server "./bin/start-bitbucke" 5 minutes ago Up 5 minutes 0.0.0.0:7990->7990/tcp, 0.0.0.0:7999->7999/tcp bitbucket
docker psで確認してみると、ひっそりと起動しているようです。
Webから接続してみます!
Dockerコンテナ内 7990 で起動 -> Dockerホスト側の7990 にポートフォワードされていますが、わたしの環境はDocker Toolboxを使っていますので、Macからアクセスするには、そのまま http://localhost:7990/ ではNG。
Virtualboxのポートフォワードでもいいのですが、Dockerホストのポートが解放されていれば、DockerホストのIPを頼りに接続でokです。
% docker-machine ip default
192.168.99.100
では、このipでMac上のブラウザから見てみます。
Kitematicからも、Bitbucket Serverのコンテナの状況が確認できました。
設定 & ログイン!
めでたく起動しましたので、評価用ライセンスキーを取得して、アプリケーションを有効化します。
設定完了後には、初期アカウントで再ログインになります。
ログイン直後は、以下のような画面に...。(おひとりさま利用なのが申し訳ないです)
プロジェクトとリポジトリを作成
Bitbucket-Serverの場合は、Stashと同じく、まずはプロジェクトを作成します。(チームのワークスペースみたいなものです)
リポジトリは、このプロジェクトの下に紐づきます。
プロジェクト作成後に、リポジトリを作成します。
コマンドラインからアクセス!
では、リポジトリが出来ましたので、早速 git clone します。ここでは、簡単にhttpでcloneします。
% git clone http://自分のアカウント@192.168.99.100:7990/scm/akp/angular.git
Cloning into 'angular'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
% cd angular/
% ls
% git remote -v
origin http://自分のアカウント@192.168.99.100:7990/scm/akp/angular.git (fetch)
origin http://自分のアカウント@192.168.99.100:7990/scm/akp/angular.git (push)
README を加えて、masterにpush してみます。
SourceTreeで確認しました :)
おひとりさまコードレビュー
画面上から、おひとりさまですがコードレビューの確認をしてみます。
インラインでのコメントも大丈夫!
と言うかんじで、あっさり確認ができました!
感想など
Docker ToolBoxのおかげで、楽に環境を作ることが出来まして、大助かり!
評価版ライセンスは必要ですが、これなら動作確認しやすいですね。
特にプラグイン周りの確認は、格段にしやすいと思います。
また、Bitbucket Serverのプロセスがデーモンで起動し続けてくれているので、Dockerホストが停止しない&コンテナが起動しているままなら、PCをサスペンドさせて、翌朝再度アクセスしても、ちゃんと続けて利用できました。
次に機会があれば、データの移行を行ってみたいと思います。