Atlassian のサーバ製品は、OS上で動かすインストーラだけでなく、Dockerのイメージを利用する形でも導入することができます。
2019年8月16日よりAtlassianの公式DockerリポジトリでJiraのイメージが公開されるようになりましたので、本稿では、Dockerを使用して各サーバ製品を起動する方法をご紹介します。
ご利用のマシン上でAtlassian 製品のJira, Confluence, Bitbucket を起動し、
各製品の機能
各製品間の連携機能
をお試しいただけるような手順を目標としてご説明します。
なお、ここでは、データの永続化やSSL化など、本番運用向けの要件は考慮しません。また、単純化のため、Bitbucketのgitでの接続にはSSHは使わず、HTTPのみを前提とします。
ご利用のマシン上でDocker をあらかじめインストールしてください。また、連携機能を確認いただく手順では、複数の製品を同時に起動しますので、少なくとも7GBほどをDockerが使用できるメモリとして割り当てておいていただくことをお薦めします。
また、今回手順の動作確認を行ったのは以下の環境です。
Docker Desktop 2.1.0.3 on macOS Mojave
Confluence 7.0.1
Bitbucket 6.6.1
以下のような手順で、各製品を立ち上げることができます。
1.以下のコマンドを実行
docker run -d -p 8080:8080 atlassian/jira-software:latest
2.ブラウザで以下を開く
1.以下のコマンドを実行
docker run -d -p 8090:8090 atlassian/confluence-server:latest
2.ブラウザで以下を開く
1.以下のコマンドを実行
docker run -d -p 7990:7990 atlassian/bitbucket-server:latest
2.ブラウザで以下を開く
これだけです!docker run コマンドによりサービスがコンテナ内で起動し、各ポート番号で待ち受けてくれますので、すぐにセットアップページに進むことができます。今回は外部データベースも想定していないので、試用版の組み込みデータベースを選択してセットアップを進めてください。
上記の手順は単一の製品を手軽に試してみるのには有効です。しかし、Atlassian 製品間連携の機能を試すためには不十分です。
なぜなら、上記のdocker run コマンドでは、それぞれのコンテナは同じネットワーク内に所属しておらず、相互に通信することができないためです。
コンテナ間の通信を行うためにはいくつかの方法が考えられますが、ここでは極力手軽な方法として、docker-composeを使用して複数コンテナをまとめて起動する方法をご紹介します。
Atlassian 製品間の連携を試すにあたって今回目標とするのは以下のような要件です。
各コンテナのサービスは相互に通信可能
各コンテナのサービスは必ず単一のURLで解決される
2番目の要件が分かりにくいかもしれませんので説明します。Atlassian 製品は多くの製品がベースURLという単一のURLを設定値として持っています。ユーザがブラウザでアクセスする際も、各製品が製品間で通信する際も、必ず単一のURLでアクセスする、という形で構築できると構成がシンプルになります。
(※)実際にはプロキシされないアプリケーション リンクを作成する方法のように、「ユーザー向け」「製品連携向け」と2種類のURLを使い分けることも可能ですが、少々複雑な構成が必要なのでここでは採用しません。
今回は、各サービスは以下のURLでアクセスできるようにします。
Jira : http://jira.internal
Confluence : http://confluence.internal
Bitbucket : http://bitbucket.internal
図で表すと以下のような構成を目指します。
1.はじめに、ユーザー自身が上記のURLでアクセスできるようにする必要があります。
パソコンのhostsファイルに以下のレコードを入力します。
127.0.0.1 jira.internal
127.0.0.1 confluence.internal
127.0.0.1 bitbucket.internal
もしくは、dnsmasq等を用い、internal という名前で127.0.0.1を解決できるようにローカル向けのdns設定を加えておくのでもよいでしょう。
2.以下の2つのファイルを用意し、新規で作成した任意のディレクトリに配置します。
docker-compose.yaml
version: '3'
services:
jira:
container_name: jira
image: atlassian/jira-software:latest
environment:
- ATL_PROXY_NAME=jira.internal
- ATL_PROXY_PORT=80
- ATL_TOMCAT_SCHEME=http
confluence:
container_name: confluence
image: atlassian/confluence-server:latest
environment:
- ATL_PROXY_NAME=confluence.internal
- ATL_PROXY_PORT=80
- ATL_TOMCAT_SCHEME=http
bitbucket:
container_name: bitbucket
image: atlassian/bitbucket-server:latest
environment:
- SERVER_PROXY_NAME=bitbucket.internal
- SERVER_PROXY_PORT=80
- SERVER_SCHEME=http
nginx:
container_name: nginx
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- jira
- confluence
- bitbucket
ports:
- "80:80"
networks:
default:
aliases:
- jira.internal
- confluence.internal
- bitbucket.internal
nginx.conf
events {}
http {
server {
server_name jira.internal;
proxy_read_timeout 600s;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jira:8080;
client_max_body_size 10M;
}
}
server {
server_name confluence.internal;
proxy_read_timeout 600s;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://confluence:8090;
client_max_body_size 10M;
}
}
server {
server_name bitbucket.internal;
proxy_read_timeout 600s;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://bitbucket:7990;
client_max_body_size 10M;
}
}
}
3.上記で環境の用意ができましたので、以下のコマンドで起動します。
docker-compose up -d
URLへアクセスし単独製品の確認の際の手順のようにセットアップします。
4.Jiraでアプリケーションリンクの設定を開きます。
他のアプリケーションとの連携にアプリケーションリンクを利用する
Jiraからconfluence, Bitbucket へのリンクを作成します。URLには http://confluence.internal, http://bitbucket.internal を指定します。
(※)以下はJiraからConfluenceに接続する際の設定画面です。
これで、Jira課題マクロやスマートコミットと言った連携機能が使えるようになります。
各Dockerコンテナは2GB程度メモリを消費しますので、Dockerが扱えるメモリ量次第では正常に起動しないかもしれません。うまくつながらない場合は
docker ps
のコマンドを使用して各サービスが正常に起動しているかお確かめください。
サービスが起動できないようでしたら、
https://docs.docker.com/config/containers/resource_constraints/
等をご参照いただき、Dockerコンテナでメモリが十分に使用できる設定になっているかお確かめください。
上記の手順はあくまで検証用として構成していますので、本番運用にあたり必要なファイルの永続化や外部データベースへの接続、と言った要件は省いていますが、構成次第では本番運用に耐えられるよう構築できるはずです。
Docker Hub 上の以下のドキュメントでは各設定値について説明がありますので、ぜひご参照ください。
Nobuyuki Mukai
Enterprise Technical Architect
Atlassian
Japan
7 accepted answers
4 comments