Camundaの開発/デモ環境をDocker for Macで構築する

__※ 2016/08/04: Docker for Mac の正式版リリースを受けて全面的に書き直しました。__

[Camunda BPM](https://camunda.org/)とは、ベルリンを本拠地とするBPM(Business Process Management)専門のソフトウェアコンサルタント会社であるCamundaが開発している、ディベロッパーフレンドリーなオープンソースのBPMツールです。

Docker for Mac で開発/デモ環境を構築する手順をメモっておきます。

# 前提とする環境
- MacOS X El Capitan 10.11.6
- Docker 1.12.0 (Docker for Mac)

# 動作確認用URL

http://localhost:8080/camunda-welcome/index.html

# 環境構築手順

## H2 Database を使う場合

下記のコマンド一発です。

```
$ docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:7.5.0
```

## MySQL を使う場合

##### 1. MySQLコンテナを立ち上げる

```
$ docker run --name mysql -d -p 3306:3306 \
           -e MYSQL_ROOT_PASSWORD=my-super-secret-pw \
           -e MYSQL_DATABASE=process-engine \
           -e MYSQL_USER=camunda \
           -e MYSQL_PASSWORD=camunda \
           mysql:5.7
```

##### 2. Camundaコンテナを立ち上げる

`--link mysql`とすると、jdbc driverのURLとして`mysql`を使えます。

```
$ docker run --name camunda -d -p 8080:8080 --link mysql \
           -e DB_DRIVER=com.mysql.jdbc.Driver \
           -e DB_URL=jdbc:mysql://mysql/process-engine \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           camunda/camunda-bpm-platform:7.5.0
```

## MariaDBを使う場合

H2DB, MySQL, PostgreSQLのドライバはcamunda-bpm-platformに含まれているのだが、他のDBを使いたい場合は、ドライバを自分でコピーする必要がある。

##### 1. h2 database で camundaコンテナを立ち上げる。
```
$ docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:7.5.0
```

##### 2. MariaDB用のJDBCドライバをダウンロードして、適当なところ(ここでは`~/tmp/`とする)に置く。
```
$ ls -l ~/tmp/mariadb-java-client-1.4.6.jar 
-rw-r--r--@ 1 inaba  staff  371715  8  2 15:13 /Users/inaba/tmp/mariadb-java-client-1.4.6.jar
```

##### 3. camundaコンテナにMariaDB用のJDBCドライバをコピーする
```
$ CONTAINER_ID=$(docker ps -f name=camunda -q)
$ docker cp ~/tmp/mariadb-java-client-1.4.6.jar ${CONTAINER_ID}:/camunda/lib/
```

##### 4. camundaコンテナを別名(ここでは`camunda75_mariadb`とする)でコミットして、MariaDB用のJDBCドライバを含むcamundaイメージを作成する
```
$ docker commit camunda camunda75_mariadb

# イメージが新規作成されていることを確認
$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
camunda75_mariadb              latest              4385066ec462        10 seconds ago      594.7 MB
camunda/camunda-bpm-platform   7.5.0               33c72b62b9a3        6 weeks ago         592.1 MB
```

ここではスルーさせてもらいますが、下記に注意。（[サーバ／インフラエンジニア養成読本 DevOps編](http://gihyo.jp/book/2016/978-4-7741-7993-3)）
> commitを利用してイメージを作成する方法はDockerfileにない操作結果がイメージに反映されるため、利用者が挙動や構築方法を把握・再現できません。地雷のようにあとから事故を引き起こす元凶となるので、基本的に利用しないようにしましょう。

##### 5. camundaコンテナを停止する
```
$ docker stop camunda
```

##### 6. MariaDBコンテナを立ち上げる
```
$ docker run --name mariadb -d -p 3306:3306 \
           -e MYSQL_ROOT_PASSWORD=my-super-secret-pw \
           -e MYSQL_DATABASE=process-engine \
           -e MYSQL_USER=camunda \
           -e MYSQL_PASSWORD=camunda \
           mariadb:10.1
```

##### 7. MariaDB用のJDBCドライバを含むcamundaコンテナ(camunda75_mariadb)を立ち上げる
```
$ docker run --name camunda75_mariadb -d -p 8080:8080 --link mariadb \
           -e DB_DRIVER=org.mariadb.jdbc.Driver \
           -e DB_URL=jdbc:mariadb://mariadb/process-engine?autoReconnect=true \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           camunda75_mariadb
```