在Mac上使用Docker构建Camunda的开发/演示环境

※ 2016/08/04:随着 Docker for Mac 的正式版发布,对其进行了全面的重写。

Camunda BPM是一家总部位于柏林的BPM(业务流程管理)专业软件咨询公司Camunda开发的开源BPM工具,该工具具备开发者友好的特点。

我将记录下在Docker for Mac上构建/演示环境的步骤。

假设存在前提环境

    • MacOS X El Capitan 10.11.6

 

    Docker 1.12.0 (Docker for Mac)

确认操作的URL

环境构建步骤

如果使用H2数据库

这是一个一步完成的命令。

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

如果使用MySQL

启动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容器

如果将其链接到MySQL,可以将MySQL作为JDBC驱动器的URL使用。

$ 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中。

使用h2数据库启动Camunda容器。
$ docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:7.5.0
下载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
将MariaDB用的JDBC驱动程序复制到camunda容器中。
$ CONTAINER_ID=$(docker ps -f name=camunda -q)
$ docker cp ~/tmp/mariadb-java-client-1.4.6.jar ${CONTAINER_ID}:/camunda/lib/
使用其他名称(在此处称为camunda75_mariadb)提交camunda容器,并创建一个包含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版)

使用commit命令创建镜像的方法在Dockerfile中无法反映不包含的操作结果,因此用户无法理解和复制操作行为和构建方式。这种方式就像地雷一样,后续可能会引发事故,所以基本上不推荐使用。

停止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
启动包含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
bannerAds