jira
Docker

DockerでJIRA上げてみました。

More than 1 year has passed since last update.


はじめに

ひきつづきDockerのお勉強中。

簡単なshellを起動させて、動作を確認するところで止まってしまったので、できればアプリケーションを起動してみるところまでは試してみたい!

そこで、index.docker.io を眺めていて目にとまったものを試してみることにしました。

今回は、atlassian/jira というイメージがあったので、これに注目。

普段Remdine使いなのですが、『簡単に起動できるなら…!』と思って、試すことにしました。

※ 追記:末尾に、うまくいかない場合の対応方法を掲載しました。


やりたいこと/やらないこと

やりたいこと


  • index.docker.io から atlassian/jira のイメージを取ってきて、追加する。

  • dockerで上記イメージを起動させる。

  • 起動したJIRAに、外部からアクセスをして、Webアプリケーションの設定を進めてみる。

やらないこと/省略すること


  • JIRAを1からセットアップすること。


    • Chefその他のプロビジョニングのスクリプトは自作しない。

    • まずは提供されているイメージを使い、ちゃんと起動するか&起動後に、このイメージがどうやって作られているかを紐解く方をメインとする。




イメージの取得/登録

Dockerfileも一緒に掲載されているので、どんなステップでインストールしているか良く分かります。

細かい構築の手順を、もっと深堀したい方は、『参考サイト/関連サイト』をどうぞ。


起動スクリプトを実行

以下、VagrantのDocker起動用ubuntuでの作業になります。


  • 前提:VagrantのOSは、private networkでIPを割り当てている。


    • 今回、192.168.33.15のIPを割り当て。



イメージの取得についてですが ネットワークの状況などにより、うまく行かないこともありましたので、ご注意。


bash

#イメージを取得

vagrant@precise64:~$ docker -D pull atlassian/jira

# 8080番ポートをdocker側の80番に割り当て
vagrant@precise64:~/work$ docker run -d -p 80:8080 atlassian/jira /init.sh -D



  • -pオプションで、dockerのコンテナの8080番を、dockerのホストになっているUbuntuの80番にマップさせています。(dockerのホスト側ポート:コンテナ側のポート、の順です)

  • それをUbuntuをVagrantでホストしているMacOS側から参照できるようにしています。

※ -pオプションでホスト側のポートの指定をしない場合は、動的にポートが割り当てになります。この場合は、何番に割当たったのか docker ps で確認できます。


起動時の画面


起動スクリプト実行直後

以下が、起動後に、MacOS側のブラウザで参照したところです。

左側は、attachしてJIRAの起動のメッセージを表示させたターミナルです。

※ MacOS側で表示したURLは192.168.33.15:49157 になっています。こちらは -pで固定ポートにマップさせなかった場合の例です。-p 80:8080 にした場合は、192.168.33.15:80 でアクセスできます。

デバッグモードで起動しているので、Tomcatのコンソールログも眺めることができます。

docker-jira.png

このあと、データベースの指定をします。


  • 『組み込み』(Built in)の場合は、デモ用でオンメモリのDBを使うようです。

  • My Own Databaseの場合は、dockerのイメージで一緒に追加されたPostgreSQLを指定します。


    • アカウント、パスワードは dockerのページに記載してあるものを使いましたが、ユーザ名/DBともpostgres で接続テストが通りました。



docker-jira-db.png


ライセンスを取得とセットアップ完了後

次に、セットアップを進めて、利用可能になった段階の画面です。

上記の起動画面のあと、DBへの接続設定や、Atlassianに接続してのライセンスのアクティベーションなどの処理が走ります。(JIRAのライセンス確認の画面が出て、『MyAtlassianのアカウントが無ければ作ってね!』のメッセージも表示されます)

幸いホストOSを介して、Dockerのコンテナ内のJIRA稼働環境も、インターネットに出て行けるため、裏側でアクティベーションが実行されて、使えるようになりました。

docker-jira-avtivate.png

※ こちらも、URLは192.168.33.15:49164 になっていますが、-p 80:8080 にした場合は、同様に192.168.33.15:80 でアクセスできます。

atlassian/jira のイメージで仕上がっているのは、セットアップ開始直前までです。

ライセンスをアクティベートして、セットアップが終わったら、コンテナの状態をコミットして置きましょう!

(忘れてしまうと、都度ライセンス設定しないといけません)


attachしてTomcatのログを確認

起動したコンテナのプロセスにattachする場合は、下記の通り。

# docker ps でCONTAINER IDを調べます

vagrant@precise64:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6cfaae1e3fe1 atlassian/jira:latest /init.sh -D 8 seconds ago Up 7 seconds 0.0.0.0:80->8080/tcp, 5432/tcp suspicious_pike

# 上記で得られたCONTAINER IDを指定してattachします
vagrant@precise64:~$ docker attach -sig-proxy=false 6cfaae1e3fe1

# うまく行くと、Web側の画面の遷移させるたびに、tomcatのログが流れます
Feb 23, 2014 2:58:56 AM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
……


  • -sig-proxy=false を指定すると、起動しているコンテナを停止せずに、Ctrl-Cでデタッチできます。


確認/イメージはどうやって作られたの?

上記の処理は、index.docker.io から取得し、JIRA起動用のスクリプトを実行しただけになります。

ちなみに、このイメージですが、ベースのUbuntuにChefをインストールし、そこからChefやスクリプトを併用して、Postgresql, java, tomocat, JIRAのセットアップを行っています。

また、dockerのため、途中のステップ(たとえばPostgreSQLをインストールした時点)まで戻る事ができます。docker historyを眺めると、その行程が見えてきます。

凄いですね…。


今回のまとめ

細かくは追いかけていませんが、


  • 起動したJIRAに、外部からアクセスをして、Webアプリケーションの設定を進めてみる。

が出来ることは分かりました。

環境がすぐに作れる/再現できるので、たとえばAPIを使ったプログラムのテスト時に起動させる、なんていうのにとても便利そうです。


補足:環境について


  • 作業マシン:MacOS / VirtualBox & Vagrant

  • Dockerのホスト用の環境



MacOS側からアクセスしやすいように、下記のように192.168.33.15 というIPを割り当てています。

Vagrant::Config.run do |config|

# Setup virtual machine box. This VM configuration code is always executed.
config.vm.box = BOX_NAME
config.vm.box_url = BOX_URI

#ここでprivate ip割り当てをしています。:hodtonly で指定。
#config.vm.network "private_network", ip: "192.168.33.15"
config.vm.network :hostonly, "192.168.33.15"

# Use the specified private key path if it is specified and not empty.
if SSH_PRIVKEY_PATH
config.ssh.private_key_path = SSH_PRIVKEY_PATH
end

config.ssh.forward_agent = true
end


補足:参考サイト/関連サイト


追記:うまく起動しない/エラーが出る場合

セットアップが終わったあとにコミットし、その後再度 docker runコマンドで起動したら、エラーになったりしましたので、追記しておきます。


プラグインのエラーが出てしまった場合


init.shが終了してしまう場合