Dockerイメージを利用したサーバ製品の導入方法

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

  • Jira 8.4.0
  • Confluence 7.0.1

  • Bitbucket 6.6.1

 

製品単独の機能を試す

以下のような手順で、各製品を立ち上げることができます。

Jira Software

1.以下のコマンドを実行

docker run -d -p 8080:8080 atlassian/jira-software:latest

2.ブラウザで以下を開く

http://localhost:8080

 

Confluence

1.以下のコマンドを実行

docker run -d -p 8090:8090 atlassian/confluence-server:latest

2.ブラウザで以下を開く

http://localhost:8090

Bitbucket

1.以下のコマンドを実行

docker run -d -p 7990:7990 atlassian/bitbucket-server:latest

2.ブラウザで以下を開く

http://localhost:7990

 

これだけです!docker run コマンドによりサービスがコンテナ内で起動し、各ポート番号で待ち受けてくれますので、すぐにセットアップページに進むことができます。今回は外部データベースも想定していないので、試用版の組み込みデータベースを選択してセットアップを進めてください。

製品間の連携機能を試す

上記の手順は単一の製品を手軽に試してみるのには有効です。しかし、Atlassian 製品間連携の機能を試すためには不十分です。

なぜなら、上記のdocker run コマンドでは、それぞれのコンテナは同じネットワーク内に所属しておらず、相互に通信することができないためです。

コンテナ間の通信を行うためにはいくつかの方法が考えられますが、ここでは極力手軽な方法として、docker-composeを使用して複数コンテナをまとめて起動する方法をご紹介します。

 

要件

Atlassian 製品間の連携を試すにあたって今回目標とするのは以下のような要件です。

  • 各コンテナのサービスは相互に通信可能

  • 各コンテナのサービスは必ず単一のURLで解決される

2番目の要件が分かりにくいかもしれませんので説明します。Atlassian 製品は多くの製品がベースURLという単一のURLを設定値として持っています。ユーザがブラウザでアクセスする際も、各製品が製品間で通信する際も、必ず単一のURLでアクセスする、という形で構築できると構成がシンプルになります。

(※)実際にはプロキシされないアプリケーション リンクを作成する方法のように、「ユーザー向け」「製品連携向け」と2種類のURLを使い分けることも可能ですが、少々複雑な構成が必要なのでここでは採用しません。

 

今回は、各サービスは以下のURLでアクセスできるようにします。

 

図で表すと以下のような構成を目指します。

docker-compose-sample.png

手順

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に接続する際の設定画面です。

Screen Shot 2019-09-13 at 15.13.56.png

 

これで、Jira課題マクロスマートコミットと言った連携機能が使えるようになります。

 

トラブルシューティング

各Dockerコンテナは2GB程度メモリを消費しますので、Dockerが扱えるメモリ量次第では正常に起動しないかもしれません。うまくつながらない場合は

docker ps

のコマンドを使用して各サービスが正常に起動しているかお確かめください。

サービスが起動できないようでしたら、

https://docs.docker.com/config/containers/resource_constraints/

等をご参照いただき、Dockerコンテナでメモリが十分に使用できる設定になっているかお確かめください。

最後に

上記の手順はあくまで検証用として構成していますので、本番運用にあたり必要なファイルの永続化や外部データベースへの接続、と言った要件は省いていますが、構成次第では本番運用に耐えられるよう構築できるはずです。

Docker Hub 上の以下のドキュメントでは各設定値について説明がありますので、ぜひご参照ください。

4 comments

LarryBrock
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
September 19, 2019

If this is what I think it is, I would be most grateful for an English translation of this post!

Nobuyuki Mukai
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
September 19, 2019

Hi! I'm happy to hear my article interests you. As you might already have noticed this article is about docker repository provided by Atlassian. I'll translate this to English in the future!

Nobuyuki Mukai
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
September 19, 2019

補足します。

docker-compose.yamlの中で、名前解決のためにextra_hostsを利用していましたが、aliasesを利用したほうがシンプルに記述できるため本文を変更しました。オリジナルの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
extra_hosts:
- "jira.internal:172.20.0.100"
- "confluence.internal:172.20.0.100"
- "bitbucket.internal:172.20.0.100"

confluence:
container_name: confluence
image: atlassian/confluence-server:latest
environment:
- ATL_PROXY_NAME=confluence.internal
- ATL_PROXY_PORT=80
- ATL_TOMCAT_SCHEME=http
extra_hosts:
- "jira.internal:172.20.0.100"
- "confluence.internal:172.20.0.100"
- "bitbucket.internal:172.20.0.100"

bitbucket:
container_name: bitbucket
image: atlassian/bitbucket-server:latest
environment:
- SERVER_PROXY_NAME=bitbucket.internal
- SERVER_PROXY_PORT=80
- SERVER_SCHEME=http
extra_hosts:
- "jira.internal:172.20.0.100"
- "confluence.internal:172.20.0.100"
- "bitbucket.internal:172.20.0.100"

nginx:
container_name: nginx
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- jira
- confluence
- bitbucket
ports:
- "80:80"
networks:
default:
ipv4_address: 172.20.0.100

networks
:
default:
ipam:
config:
- subnet: 172.20.0.0/24
Nobuyuki Mukai
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
November 4, 2019

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events