LoginSignup
17

More than 5 years have passed since last update.

DockerでJIRA上げてみました。

Last updated at Posted at 2014-02-23

はじめに

ひきつづき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が終了してしまう場合

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17