JiraとConfluence（DataCenter版）をDockerで構築する

#はじめに
オンプレ環境でJiraとConfluence（Server版）を利用していましたが、2021年2月にServer版ライセンスが販売終了したため、DataCenter版に移行することにしました。DataCenter版のJiraとConfluenceの動作検証のための環境をDockerで構築したので、構築手順を紹介します。

#動作環境
* MacBook Pro (macOS Catalina 10.15.7)
* Docker for Mac

#サービス構成
##全体像
コンテナの構成は下図の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/6b34131c-9ab1-8c42-bdc1-74c8dafd591d.png)

* リバースプロキシ
    * nginx
* サービス
    * Jira
    * Confluence
* DB
    * pgAdmin（DB操作用のGUI）
    * PostgreSQL
* メール
    * MailHog（Jira・Confluenceの通知テスト用）

# 手順

以下の構成で、docker-composeで立ち上げます。

```
# ファイル構成

(workディレクトリ)
  ┣ docker-compose.yaml
  ┗ nginx.conf
``` 

```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 
    volumes:
     - ./jiraAppData:/var/atlassian/application-data/jira
  confluence: 
    container_name: confluence
    image: atlassian/confluence-server:latest
    environment: 
     - ATL_PROXY_NAME=confluence.internal
     - ATL_PROXY_PORT=80
     - ATL_TOMCAT_SCHEME=http
    volumes:
     - ./confluenceAppData:/var/atlassian/application-data/confluence
  nginx: 
    container_name: nginx 
    image: nginx:latest 
    volumes:
     - ./nginx.conf:/etc/nginx/nginx.conf 
    depends_on: 
     - jira 
     - confluence 
     - pgadmin
    ports: 
     - "80:80" 
    networks: 
      default: 
        aliases:
         - jira.internal
         - confluence.internal
         - pgadmin.internal
  postgres:
    container_name: postgres
    image: postgres:latest
    volumes:
      - ./postgresData:/var/lib/postgresql/data 
    ports: 
     - "5432:5432" 
    environment: 
     - POSTGRES_USER=postgres
     - POSTGRES_PASSWORD=mypassword
  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4:latest
    volumes:
      - ./pgAdminData:/pgadmin
      - ./pgAdminAppData:/var/lib/pgadmin4
    environment: 
     - PGADMIN_DEFAULT_EMAIL=postgres@example.com
     - PGADMIN_DEFAULT_PASSWORD=mypassword
    depends_on:
     - postgres
  mailhog:
    container_name: mailhog 
    image: mailhog/mailhog:latest
    restart: always
    ports:
     - "8025:8025" 
     - "1025:1025" 
    environment:
      MH_STORAGE: maildir
      MH_MAILDIR_PATH: /tmp
    volumes:
     - ./mailhog:/tmp

```

```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 pgadmin.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://pgadmin;
   }
 }
}
```

必要に応じてhostsを設定します。

```
# hosts
127.0.0.1       jira.internal
127.0.0.1       confluence.internal
127.0.0.1       pgadmin.internal
```

以下のコマンドを実行すると、仮想環境が起動します。

```
cd (workディレクトリ)
docker-compose up -d
```

# DB設定
Server版とは異なり、DataCenter版では外部DBの設定が必要です。JiraとConfluenceで外部DBとしてPostgreSQLを利用する手順についても記載します。

## PostgreSQLの設定
Jira・Confluenceで使うDB（PostgreSQL）をpgAdminからセットアップします。

### pgAdminへログイン
ブラウザからpgAdmin（`http://pgAdmin.internal`） へアクセスし、docker-compose.yamlに設定した値でログインする。
ユーザ：PGADMIN_DEFAULT_EMAIL
パスワード：PGADMIN_DEFAULT_PASSWORD

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/4586cfe6-bb6b-a9b3-c567-a43b1ff0d8ce.png)

### PostgreSQLの設定
トップページにあるAdd New Server をクリックして以下のように設定する。Generalタブのnameは適当に設定してください。
Host：PostgreSQLコンテナのcontainer_name
Username：POSTGRES_USER
password：POSTGRES_PASSWORD

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/5b664d96-c284-d7a0-3adc-8b930ff99bce.png)


### ユーザ作成
ユーザを作成
Login/GroupRole を右クリック > Create > Login/GroupRole...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/f1096595-6942-2b60-d0b7-3a8467de0f15.png)

パスワードを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/0e82a1ac-4b4e-8480-fae7-df623906ce2d.png)

Can login? を　Yesに設定して保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/8a04f9c8-c75e-913d-6b65-9bbe6166d32e.png)

### テーブル作成
#### Jira用のテーブルを作成する
Ownerは前項で作成したユーザ（confluenceuser）とする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/608833bb-8463-2a04-43dd-c8778aa37ff5.png)

Definitionタブで以下のように設定して保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/69f0fe80-7731-9c95-29f4-a1dc7b287381.png)

#### Confluence用のテーブルを作成する
Ownerは前項で作成したユーザ（confluenceuser）とする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/8493c2d3-2a4a-6a4b-2868-9448b1f18037.png)

Definitionタブで以下のように設定して保存。Collationをen_US.utf8に設定しないと、Confluenceで問題が発生するらしい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/910174/aaab18be-1430-daa7-4d9b-4113cc1310aa.png)

### JiraとConfluenceの設定
JiraとConfluenceのセットアップについては割愛します。
JiraおよびConfluenceの初回起動時にDBを設定するので、以下を参考に設定してください。

https://ja.confluence.atlassian.com/adminjiraserver/connecting-jira-applications-to-postgresql-938846851.html

https://ja.confluence.atlassian.com/doc/database-setup-for-postgresql-173244522.html

### JiraとConfluenceのメールサーバの設定
Jiraのメールサーバの設定については、以下リンクを参照してください。
ホスト名にはmailhogのコンテナ名（今回はmailhog）を指定します。

https://ja.confluence.atlassian.com/adminjiraserver/configuring-an-smtp-mail-server-to-send-notifications-947184044.html

Confluenceのメールサーバ設定については、以下です。

https://ja.confluence.atlassian.com/doc/configuring-a-server-for-outgoing-mail-151078.html

これでDataCenter版のJiraとConfluenceの動作検証のための環境ができました。

# その他参考にしたサイト

https://community.atlassian.com/t5/Jira-articles/Dockerイメージを利用したサーバ製品の導入方法/ba-p/1182327

https://qiita.com/ktaidot/items/11337ad8e44e5561010d