Project Icon

docker-camunda-bpm-platform

Camunda工作流引擎的Docker容器化部署方案

该项目提供Camunda Platform的Docker镜像,支持Tomcat、Wildfly和Run等多种应用服务器。通过环境变量可配置数据库连接、Java参数等。镜像具备等待数据库就绪、调试、Prometheus监控等功能,并支持构建企业版。适用于快速部署测试和生产环境,简化了Camunda工作流引擎的容器化部署流程。

Camunda Platform Docker images

Use our GitHub issue tracker for bug reports or feature requests. For help requests, open a help request topic on the Camunda forum or a help request support ticket if you are an enterprise customer.

This Camunda project provides docker images of the latest Camunda Platform releases. The images can be used to demonstrate and test the Camunda Platform or can be extended with own process applications. It is planned to provide images on the official [docker registry][] for every upcoming release, which includes alpha releases.

The Camunda Platform Docker images are wrappers for the pre-packaged Camunda distributions. The pre-packaged distributions are intended for users who want a getting started experience. In case you want to use the Camunda Docker images in production, consider reading our security instructions.

Distributions

You can find more detailed documentation on the pre-packaged (community) distributions that Camunda provides at the following links:

Get started

To start a Docker container of the latest Camunda Platform 7 release:

docker pull camunda/camunda-bpm-platform:latest
docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest

Tasklist, Cockpit, Admin web apps

The three Camunda web apps are accessible through the landing page: http://localhost:8080/camunda-welcome/index.html

The default credentials for admin access to the web apps is:

  • Username: demo
  • Password: demo

REST API

The Camunda Rest-API is accessible through: http://localhost:8080/engine-rest

See the REST API documentation for more details on how to use it.

Note: The REST API does not require authentication by default. Follow the instructions from the documentation to enable authentication for the REST API.

Supported tags/releases

The following tag schema is used. The user has the choice between different application server distributions of Camunda Platform.

  • latest, ${DISTRO}-latest: Always the latest minor release of Camunda Platform.
  • SNAPSHOT, ${VERSION}-SNAPSHOT, ${DISTRO}-SNAPSHOT, ${DISTRO}-${VERSION}-SNAPSHOT: The latest SNAPSHOT version of Camunda Platform, which is not released yet.
  • ${VERSION}, ${DISTRO}-${VERSION}: A specific version of Camunda Platform.

${DISTRO} can be one of the following:

  • tomcat
  • wildfly
  • run

If no ${DISTRO} is specified, the tomcat distribution is used. For all available tags see the [docker hub tags][].

Camunda Platform 7 configuration

You can find the complete Camunda documentation at https://docs.camunda.org/.

If you prefer to start your Camunda Docker image right away, you will find the following links useful:

Camunda Docker image configuration

Configuration of the run distribution

Because run is a Spring Boot-based distribution, it can be configured through the respective environment variables. For example:

  • SPRING_DATASOURCE_DRIVER_CLASS_NAME the database driver class name, supported are h2 (default), mysql, and postgresql:
    • h2: DB_DRIVER=org.h2.Driver
    • mysql: DB_DRIVER=com.mysql.cj.jdbc.Driver
    • postgresql: DB_DRIVER=org.postgresql.Driver
  • SPRING_DATASOURCE_URL the database jdbc url
  • SPRING_DATASOURCE_USERNAME the database username
  • SPRING_DATASOURCE_PASSWORD the database password

When not set or otherwise specified, the integrated H2 database is used.

Any other SPRING_* variables can be used to further configure the app. Alternatively, a default.yml file can be mounted to /camunda/configuration/default.yml. More information on configuring Spring Boot applications can be found in the Spring Boot documentation.

The following environment variables are supported for convenience and compatibility and are internally mapped to SPRING_DATASOURCE_* variables when provided:

  • DB_DRIVER
  • DB_USERNAME
  • DB_PASSWORD
  • DB_URL
  • DB_PASSWORD_FILE

The JMX_PROMETHEUS configuration is not supported, and while DEBUG can be used to enable debug output, it doesn't start a debug socket.

run supports different startup options to choose whether or not to enable the WebApps, the REST API or Swagger UI. By default, all three are enabled.

Passing startup parameters to enable them selectively can be done by passing any combination of --webapps, --rest or --swaggerui like in the following example:

Enable only web apps:

docker run camunda/camunda-bpm-platform:run ./camunda.sh --webapps

Enable only REST API and Swagger UI:

docker run camunda/camunda-bpm-platform:run ./camunda.sh --rest --swaggerui

Additionally, a --production parameter is supported to switch the configuration to /camunda/configuration/production.yml. This parameter also disables Swagger UI by default.

Java versions

Our docker images are using a LTS OpenJDK version supported by Camunda Platform. This currently means:

  • Camunda 7.20 or later will be based on OpenJDK 17.
    • Camunda 7.20 image for Camunda Run is supported only for JDK 17.
  • Camunda 7.12 - 7.19 is based on OpenJDK 11.
    • Camunda 7.19 image for WildFly is supported only for JDK 11 and JDK 17.
  • All previous versions are based on OpenJDK 8.

While all the OpenJDK versions supported by Camunda will work with the exceptions specified above, we will not provide ready to use images for them.

Java options

To override the default Java options the environment variable JAVA_OPTS can be set.

Use docker memory limits

Instead of specifying the Java memory settings it is also possible to instruct the JVM to respect the docker memory settings. As the image uses Java 17 it does not have to be enabled explicitly using the JAVA_OPTS environment variable. If you want to set the memory limits manually you can restore the pre-Java-11-behavior by setting the following environment variable.

JAVA_OPTS="-XX:-UseContainerSupport"

Database environment variables

The used database can be configured by providing the following environment variables:

  • DB_CONN_MAXACTIVE the maximum number of active connections (default: 20)
  • DB_CONN_MAXIDLE the maximum number of idle connections (default: 20)
    • ignored when app server = wildfly or run
  • DB_CONN_MINIDLE the minimum number of idle connections (default: 5)
  • DB_DRIVER the database driver class name, supported are h2, mysql, and postgresql:
    • h2: DB_DRIVER=org.h2.Driver
    • mysql: DB_DRIVER=com.mysql.cj.jdbc.Driver
    • postgresql: DB_DRIVER=org.postgresql.Driver
  • DB_URL the database jdbc url
  • DB_USERNAME the database username
  • DB_PASSWORD the database password
  • DB_VALIDATE_ON_BORROW validate database connections before they are used (default: false)
  • DB_VALIDATION_QUERY the query to execute to validate database connections (default: "SELECT 1")
  • DB_PASSWORD_FILE this supports Docker Secrets. Put here the path of the secret, e.g. /run/secrets/camunda_db_password. Make sure that DB_PASSWORD is not set when using this variable!
  • SKIP_DB_CONFIG skips the automated database configuration to use manual configuration
  • WAIT_FOR wait for a host:port to be available over TCP before starting. Check Waiting for database for details.
  • WAIT_FOR_TIMEOUT how long to wait for the service to be avaiable - defaults to 30 seconds. Check Waiting for database for details.

For example, to use a postgresql docker image as database you can start the platform as follows:

# start postgresql image with database and user configured
docker run -d --name postgresql ...

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           -e DB_DRIVER=org.postgresql.Driver \
           -e DB_URL=jdbc:postgresql://db:5432/process-engine \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           -e WAIT_FOR=db:5432 \
           camunda/camunda-bpm-platform:latest

Another option is to save the database config to an environment file, i.e. db-env.txt:

DB_DRIVER=org.postgresql.Driver
DB_URL=jdbc:postgresql://db:5432/process-engine
DB_USERNAME=camunda
DB_PASSWORD=camunda
WAIT_FOR=db:5432

Use this file to start the container:

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           --env-file db-env.txt camunda/camunda-bpm-platform:latest

The docker image already contains drivers for h2, mysql, and postgresql. If you want to use other databases, you have to add the driver to the container and configure the database settings manually by linking the configuration file into the container.

To skip the configuration of the database by the docker container and use your own configuration set the environment variable SKIP_DB_CONFIG to a non-empty value:

docker run -d --name camunda -p 8080:8080 -e SKIP_DB_CONFIG=true \
           camunda/camunda-bpm-platform:latest

Waiting for database

Starting the Camunda Platform Docker image requires the database to be already available. This is quite a challenge when the database and Camunda Platform are both docker containers spawned simultaneously, for example, by docker compose or inside a Kubernetes Pod. To help with that, the Camunda Platform Docker image includes wait-for-it.sh to allow the container to wait until a 'host:port' is ready. The mechanism can be configured by two environment variables:

  • WAIT_FOR_TIMEOUT: how long to wait for the service to be available in seconds
  • WAIT_FOR: the service host:port to wait for. You can provide multiple host-port pairs separated by a comma or an empty space (Example: "host1:port1 host2:port2"). The WAIT_FOR_TIMEOUT applies to each specified host, i.e. Camunda will wait for host1:port1 to become available and, if unavailable for the complete WAIT_FOR_TIMEOUT duration, will wait for host2:port2 for another WAIT_FOR_TIMEOUT period.

Example with a PostgreSQL container:

docker run -d --name postgresql ...

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           -e DB_DRIVER=org.postgresql.Driver \
           -e DB_URL=jdbc:postgresql://db:5432/process-engine \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           -e WAIT_FOR=db:5432 \
           -e WAIT_FOR_TIMEOUT=60 \
           camunda/camunda-bpm-platform:latest

Volumes

Camunda Platform is installed inside the /camunda directory. Which means the Apache Tomcat configuration files are inside the /camunda/conf/ directory and the deployments on Apache Tomcat are in /camunda/webapps/. The directory structure depends on the application server.

Debug

To enable JPDA inside the container, you can set the environment variable DEBUG=true on startup of the container. This will allow you to connect to the container on port 8000 to debug your application. This is only supported for wildfly and tomcat distributions.

Prometheus JMX Exporter

To enable Prometheus JMX Exporter inside the container, you can set the environment variable JMX_PROMETHEUS=true on startup of the container. This will allow you to get metrics in Prometheus format at <host>:9404/metrics. For configuring exporter you need attach your configuration as a container volume at /camunda/javaagent/prometheus-jmx.yml. This is only supported for wildfly and tomcat distributions.

Change timezone

To change the timezone of the docker container, you can set the environment variable TZ.

docker run -d --name camunda -p 8080:8080 \
           -e TZ=Europe/Berlin \
          camunda/camunda-bpm-platform:latest

Build

You can build a Docker image for a given Camunda Platform version and distribution yourself. Make sure to adjust the settings.xml and remove the camunda-nexus mirror (no matter if you are building a community or enterprise edition). If you want to build the enterprise edition (EE), check out the dedicated README section.

Build a released version

To build a community image specify the DISTRO and VERSION build argument. Possible values for DISTRO are:

  • tomcat
  • wildfly
  • run (if the Camunda Platform version already supports it)

The VERSION argument is the Camunda Platform version you want to build, i.e. 7.17.0.

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  .

Build a SNAPSHOT version

Additionally, you can build SNAPSHOT versions for the upcoming releases by setting the SNAPSHOT build argument to true.

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg SNAPSHOT=true \
  .

Build an enterprise version

If you are a Camunda enterprise customer, you can build an enterprise version of the Docker image. Set the VERSION build argument to the Camunda version without the ee suffix, i.e. 7.16.1, set the EE build argument to true and the USER and PASSWORD build argument to your enterprise credentials.

It is recommended that you git checkout the branch for the Camunda version you would like to build. For example, if you want to build a Docker image for Camunda version 7.16.3, first execute git checkout 7.16 on this repository.

Note: As the image uses a multi-stage Dockerfile the credentials are not part of the Docker image history of the final image. Be aware that you should not distribute this image outside your company.

docker build -t camunda-bpm-platform \
  --build-arg EE=true \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg USER=${USER} \
  --build-arg PASSWORD=${PASSWORD} \
  .

Build when behind a proxy

You can pass the following arguments to set proxy settings to Maven:

  • MAVEN_PROXY_HOST
  • MAVEN_PROXY_PORT
  • MAVEN_PROXY_USER
  • MAVEN_PROXY_PASSWORD

Example for a released version of a community edition:

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg MAVEN_PROXY_HOST=${PROXY_HOST} \
  --build-arg MAVEN_PROXY_PORT=${PROXY_PORT} \
  --build-arg MAVEN_PROXY_USER=${PROXY_USER} \
  --build-arg MAVEN_PROXY_PASSWORD=${PROXY_PASSWORD} \
  .

Override MySQL and PostgreSQL driver versions.

By default, the driver versions are fetched from https://github.com/camunda/camunda-bpm-platform/blob/master/database/pom.xml. That can be overriden by passing MYSQL_VERSION and POSTGRESQL_VERSION build args

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg POSTGRESQL_VERSION=${POSTGRESQL_VERSION} \
  --build-arg MYSQL_VERSION=${MYSQL_VERSION} \
  .

Use cases

Change configuration files

You can use docker volumes to link your own configuration files inside the container. For example, if you want to change the bpm-platform.xml on Apache Tomcat:

docker run -d --name camunda -p 8080:8080 \
           -v $PWD/bpm-platform.xml:/camunda/conf/bpm-platform.xml \
          
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号