{"id":19767145,"url":"https://github.com/camunda/docker-camunda-bpm-platform","last_synced_at":"2025-05-15T10:00:58.158Z","repository":{"id":25836544,"uuid":"29275984","full_name":"camunda/docker-camunda-bpm-platform","owner":"camunda","description":"Camunda 7 - Docker images for the Camunda BPM platform","archived":false,"fork":false,"pushed_at":"2025-04-14T02:52:23.000Z","size":374,"stargazers_count":400,"open_issues_count":1,"forks_count":216,"subscribers_count":36,"default_branch":"next","last_synced_at":"2025-04-14T16:53:35.333Z","etag":null,"topics":["bpmn","bpmn-engine","camunda-bpm-platform","docker-image","dockerfile","java","process-engine","workflow"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camunda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-01-15T02:05:56.000Z","updated_at":"2025-04-14T02:52:25.000Z","dependencies_parsed_at":"2023-10-16T20:57:00.566Z","dependency_job_id":"69ca353a-d9ad-4ff4-952b-86748aa47e26","html_url":"https://github.com/camunda/docker-camunda-bpm-platform","commit_stats":{"total_commits":236,"total_committers":38,"mean_commits":"6.2105263157894735","dds":0.6059322033898304,"last_synced_commit":"a0c3360910cc6c2561368d4165785f233b75ae78"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Fdocker-camunda-bpm-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Fdocker-camunda-bpm-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Fdocker-camunda-bpm-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Fdocker-camunda-bpm-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camunda","download_url":"https://codeload.github.com/camunda/docker-camunda-bpm-platform/tar.gz/refs/heads/next","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319715,"owners_count":22051072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bpmn","bpmn-engine","camunda-bpm-platform","docker-image","dockerfile","java","process-engine","workflow"],"created_at":"2024-11-12T04:28:08.422Z","updated_at":"2025-05-15T10:00:57.515Z","avatar_url":"https://github.com/camunda.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Camunda Platform Docker images\n\n\u003e Use our [GitHub issue tracker](https://github.com/camunda/camunda-bpm-platform/issues) for bug reports or feature requests.\n\u003e For help requests, open a help request topic on the [Camunda forum](https://forum.camunda.org/) or [a help request support ticket](https://camunda.com/services/enterprise-support-guide/#how-to-create-a-support-issue) if you are an enterprise customer.\n\nThis Camunda project provides docker images of the latest \nCamunda Platform releases. The images can be used to demonstrate and test the\nCamunda Platform or can be extended with own process applications. It is\nplanned to provide images on the official [docker registry][] for every upcoming\nrelease, which includes alpha releases.\n\nThe Camunda Platform Docker images are wrappers for the pre-packaged Camunda\ndistributions. The pre-packaged distributions are intended for users who want a \ngetting started experience. In case you want to use the Camunda Docker images \nin production, consider reading our [security instructions](https://docs.camunda.org/manual/latest/user-guide/security/).\n\n## Distributions\n\nYou can find more detailed documentation on the pre-packaged (community) \ndistributions that Camunda provides at the following links:\n\n* Apache Tomcat - [Camunda Tomcat integration documentation](https://docs.camunda.org/manual/latest/user-guide/runtime-container-integration/tomcat/)\n* Wildfly - [Camunda Wildfly Subsystem documentation](https://docs.camunda.org/manual/latest/user-guide/runtime-container-integration/jboss/)\n* Camunda Platform Run - [documentation](https://docs.camunda.org/manual/latest/user-guide/camunda-bpm-run/)\n\n## Get started\n\nTo start a Docker container of the latest Camunda Platform 7 release:\n\n```\ndocker pull camunda/camunda-bpm-platform:latest\ndocker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest\n```\n\n### Tasklist, Cockpit, Admin web apps\n\nThe three Camunda web apps are accessible through the landing page: \nhttp://localhost:8080/camunda-welcome/index.html\n\nThe default credentials for admin access to the web apps is:\n\n- Username: `demo`\n- Password: `demo`\n\n### REST API\n\nThe Camunda Rest-API is accessible through: http://localhost:8080/engine-rest\n\nSee the [REST API](https://docs.camunda.org/manual/latest/reference/rest/)\ndocumentation for more details on how to use it.\n\n**Note**: The REST API does not require authentication by default. Follow the instructions from the [documentation](https://docs.camunda.org/manual/latest/reference/rest/overview/authentication/)\nto enable authentication for the REST API.\n\n## Supported tags/releases\n\nThe following tag schema is used. The user has the choice between different\napplication server distributions of Camunda Platform.\n\n- `latest`, `${DISTRO}-latest`: Always the latest minor release of Camunda Platform.\n- `SNAPSHOT`, `${VERSION}-SNAPSHOT`, `${DISTRO}-SNAPSHOT`,\n  `${DISTRO}-${VERSION}-SNAPSHOT`: The latest SNAPSHOT version of Camunda \n  Platform, which is not released yet.\n- `${VERSION}`, `${DISTRO}-${VERSION}`: A specific version of Camunda Platform.\n\n`${DISTRO}` can be one of the following: \n* `tomcat`\n* `wildfly`\n* `run`\n\nIf no `${DISTRO}` is specified, the `tomcat` distribution is used. For all \navailable tags see the [docker hub tags][].\n\n## Camunda Platform 7 configuration\n\nYou can find the complete Camunda documentation at https://docs.camunda.org/.\n\nIf you prefer to start your Camunda Docker image right away, you will find the\nfollowing links useful:\n\n* [Camunda Platform configuration file properties](https://docs.camunda.org/manual/latest/reference/deployment-descriptors/descriptors/bpm-platform-xml/)\n* [Process Engine Plugins guide](https://docs.camunda.org/manual/latest/user-guide/process-engine/process-engine-plugins/)\n* [Camunda Logging](https://docs.camunda.org/manual/latest/user-guide/logging/)\n\n## Camunda Docker image configuration\n\n### Configuration of the `run` distribution\n\nBecause `run` is a Spring Boot-based distribution, it can be configured through \nthe respective environment variables. For example:\n- `SPRING_DATASOURCE_DRIVER_CLASS_NAME` the database driver class name, \n  supported are h2 (default), mysql, and postgresql:\n  - h2: `DB_DRIVER=org.h2.Driver`\n  - mysql: `DB_DRIVER=com.mysql.cj.jdbc.Driver`\n  - postgresql: `DB_DRIVER=org.postgresql.Driver`\n- `SPRING_DATASOURCE_URL` the database jdbc url\n- `SPRING_DATASOURCE_USERNAME` the database username\n- `SPRING_DATASOURCE_PASSWORD` the database password\n\nWhen not set or otherwise specified, the integrated H2 database is used.\n\nAny other `SPRING_*` variables can be used to further configure the app. \nAlternatively, a `default.yml` file can be mounted to `/camunda/configuration/default.yml`.\nMore information on configuring Spring Boot applications can be found in the \n[Spring Boot documentation](https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config).\n\nThe following environment variables are supported for convenience and \ncompatibility and are internally mapped to `SPRING_DATASOURCE_*` variables \nwhen provided:\n\n* `DB_DRIVER`\n* `DB_USERNAME`\n* `DB_PASSWORD`\n* `DB_URL`\n* `DB_PASSWORD_FILE`\n\nThe `JMX_PROMETHEUS` configuration is not supported, and while `DEBUG` can be \nused to enable debug output, it doesn't start a debug socket.\n\n`run` supports different startup options to choose whether or not to enable the \nWebApps, the REST API or Swagger UI. By default, all three are enabled.\n\nPassing startup parameters to enable them selectively can be done by passing any \ncombination of `--webapps`, `--rest` or `--swaggerui` like in the following \nexample:\n\nEnable only web apps:\n\n```bash\ndocker run camunda/camunda-bpm-platform:run ./camunda.sh --webapps\n``` \nEnable only REST API and Swagger UI:\n```bash\ndocker run camunda/camunda-bpm-platform:run ./camunda.sh --rest --swaggerui\n```\n\nAdditionally, a `--production` parameter is supported to switch the \nconfiguration to `/camunda/configuration/production.yml`. This parameter also \ndisables Swagger UI by default.\n\n### Java versions\n\nOur docker images are using a LTS OpenJDK version supported by\nCamunda Platform. This currently means:\n\n - Camunda 7.20 or later will be based on OpenJDK 17.\n   - Camunda 7.20 image for Camunda Run is supported only for JDK 17.\n - Camunda 7.12 - 7.19 is based on OpenJDK 11.\n   - Camunda 7.19 image for WildFly is supported only for JDK 11 and JDK 17.\n - All previous versions are based on OpenJDK 8.\n\nWhile all the OpenJDK versions supported by Camunda will work with the exceptions specified above,\nwe will not provide ready to use images for them.\n\n#### Java options\n\nTo override the default Java options the environment variable `JAVA_OPTS` can\nbe set.\n\n### Use docker memory limits\n\nInstead of specifying the Java memory settings it is also possible to instruct\nthe JVM to respect the docker memory settings. As the image uses Java 17 it does\nnot have to be enabled explicitly using the `JAVA_OPTS` environment variable. \nIf you want to set the memory limits manually you can restore the pre-Java-11-behavior\nby setting the following environment variable.\n\n```\nJAVA_OPTS=\"-XX:-UseContainerSupport\"\n```\n\n### Database environment variables\n\nThe used database can be configured by providing the following environment\nvariables:\n\n- `DB_CONN_MAXACTIVE` the maximum number of active connections (default: `20`)\n- `DB_CONN_MAXIDLE` the maximum number of idle connections (default: `20`)\n  - ignored when app server = `wildfly` or `run`\n- `DB_CONN_MINIDLE` the minimum number of idle connections (default: `5`)\n- `DB_DRIVER` the database driver class name, supported are h2, mysql, and postgresql:\n  - h2: `DB_DRIVER=org.h2.Driver`\n  - mysql: `DB_DRIVER=com.mysql.cj.jdbc.Driver`\n  - postgresql: `DB_DRIVER=org.postgresql.Driver`\n- `DB_URL` the database jdbc url\n- `DB_USERNAME` the database username\n- `DB_PASSWORD` the database password\n- `DB_VALIDATE_ON_BORROW` validate database connections before they are used (default: `false`)\n- `DB_VALIDATION_QUERY` the query to execute to validate database connections (default: `\"SELECT 1\"`)\n- `DB_PASSWORD_FILE` this supports [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/). \n  Put here the path of the secret, e.g. `/run/secrets/camunda_db_password`. \n  Make sure that `DB_PASSWORD` is not set when using this variable!\n- `SKIP_DB_CONFIG` skips the automated database configuration to use manual\n  configuration\n- `WAIT_FOR` wait for a `host:port` to be available over TCP before starting. Check [Waiting for database](#waiting-for-database) for details.\n- `WAIT_FOR_TIMEOUT` how long to wait for the service to be avaiable - defaults to 30 seconds. Check [Waiting for database](#waiting-for-database) for details.\n\nFor example, to use a `postgresql` docker image as database you can start the\nplatform as follows:\n\n```\n# start postgresql image with database and user configured\ndocker run -d --name postgresql ...\n\ndocker run -d --name camunda -p 8080:8080 --link postgresql:db \\\n           -e DB_DRIVER=org.postgresql.Driver \\\n           -e DB_URL=jdbc:postgresql://db:5432/process-engine \\\n           -e DB_USERNAME=camunda \\\n           -e DB_PASSWORD=camunda \\\n           -e WAIT_FOR=db:5432 \\\n           camunda/camunda-bpm-platform:latest\n```\n\nAnother option is to save the database config to an environment file, i.e.\n`db-env.txt`:\n\n```\nDB_DRIVER=org.postgresql.Driver\nDB_URL=jdbc:postgresql://db:5432/process-engine\nDB_USERNAME=camunda\nDB_PASSWORD=camunda\nWAIT_FOR=db:5432\n```\n\nUse this file to start the container:\n\n```\ndocker run -d --name camunda -p 8080:8080 --link postgresql:db \\\n           --env-file db-env.txt camunda/camunda-bpm-platform:latest\n```\n\nThe docker image already contains drivers for `h2`, `mysql`, and `postgresql`.\nIf you want to use other databases, you have to add the driver to the container\nand configure the database settings manually by linking the configuration file\ninto the container.\n\nTo skip the configuration of the database by the docker container and use your\nown configuration set the environment variable `SKIP_DB_CONFIG` to a non-empty \nvalue:\n\n```\ndocker run -d --name camunda -p 8080:8080 -e SKIP_DB_CONFIG=true \\\n           camunda/camunda-bpm-platform:latest\n```\n\n### Waiting for database\n\nStarting the Camunda Platform Docker image requires the database to be already \navailable. This is quite a challenge when the database and Camunda Platform are \nboth docker containers spawned simultaneously, for example, by `docker compose` \nor inside a Kubernetes Pod. To help with that, the Camunda Platform Docker image \nincludes [wait-for-it.sh](https://github.com/vishnubob/wait-for-it) to allow the \ncontainer to wait until a 'host:port' is ready. The mechanism can be configured \nby two environment variables:\n\n- `WAIT_FOR_TIMEOUT`: how long to wait for the service to be available in seconds\n- `WAIT_FOR`: the service `host:port` to wait for. You can provide multiple\nhost-port pairs separated by a comma or an empty space (Example:\n`\"host1:port1 host2:port2\"`).\nThe `WAIT_FOR_TIMEOUT` applies to each specified host, i.e. Camunda will wait for\n`host1:port1` to become available and, if unavailable for the complete `WAIT_FOR_TIMEOUT`\nduration, will wait for `host2:port2` for another `WAIT_FOR_TIMEOUT` period.\n\nExample with a PostgreSQL container:\n\n```\ndocker run -d --name postgresql ...\n\ndocker run -d --name camunda -p 8080:8080 --link postgresql:db \\\n           -e DB_DRIVER=org.postgresql.Driver \\\n           -e DB_URL=jdbc:postgresql://db:5432/process-engine \\\n           -e DB_USERNAME=camunda \\\n           -e DB_PASSWORD=camunda \\\n           -e WAIT_FOR=db:5432 \\\n           -e WAIT_FOR_TIMEOUT=60 \\\n           camunda/camunda-bpm-platform:latest\n```\n\n### Volumes\n\nCamunda Platform is installed inside the `/camunda` directory. Which\nmeans the Apache Tomcat configuration files are inside the `/camunda/conf/` \ndirectory and the deployments on Apache Tomcat are in `/camunda/webapps/`. \nThe directory structure depends on the application server.\n\n### Debug\n\nTo enable JPDA inside the container, you can set the environment variable\n`DEBUG=true` on startup of the container. This will allow you to connect to the\ncontainer on port `8000` to debug your application.\nThis is only supported for `wildfly` and `tomcat` distributions.\n\n### Prometheus JMX Exporter\n\nTo enable Prometheus JMX Exporter inside the container, you can set the \nenvironment variable `JMX_PROMETHEUS=true` on startup of the container. \nThis will allow you to get metrics in Prometheus format at `\u003chost\u003e:9404/metrics`. \nFor configuring exporter you need attach your configuration as a container volume \nat `/camunda/javaagent/prometheus-jmx.yml`. This is only supported for `wildfly` \nand `tomcat` distributions.\n\n### Change timezone\n\nTo change the timezone of the docker container, you can set the environment\nvariable `TZ`.\n\n```\ndocker run -d --name camunda -p 8080:8080 \\\n           -e TZ=Europe/Berlin \\\n          camunda/camunda-bpm-platform:latest\n```\n\n## Build\n\nYou can build a Docker image for a given Camunda Platform version and distribution yourself.\nMake sure to adjust the [settings.xml](settings.xml) and remove the `camunda-nexus` mirror \n(no matter if you are building a community or enterprise edition).\nIf you want to build the enterprise edition (EE), \ncheck out [the dedicated README section](#build-an-enterprise-version).\n\n### Build a released version\n\nTo build a community image specify the `DISTRO` and `VERSION` build\nargument. Possible values for `DISTRO` are:\n* `tomcat`\n* `wildfly`\n* `run` (if the Camunda Platform version already supports it)\n\nThe `VERSION` argument is the Camunda Platform version you want to build, \ni.e. `7.17.0`.\n\n```\ndocker build -t camunda-bpm-platform \\\n  --build-arg DISTRO=${DISTRO} \\\n  --build-arg VERSION=${VERSION} \\\n  .\n```\n\n### Build a SNAPSHOT version\n\nAdditionally, you can build `SNAPSHOT` versions for the upcoming releases by\nsetting the `SNAPSHOT` build argument to `true`.\n\n```\ndocker build -t camunda-bpm-platform \\\n  --build-arg DISTRO=${DISTRO} \\\n  --build-arg VERSION=${VERSION} \\\n  --build-arg SNAPSHOT=true \\\n  .\n```\n\n### Build an enterprise version\n\nIf you are a Camunda enterprise customer, you can build\nan enterprise version of the Docker image. Set the `VERSION`\nbuild argument to the Camunda version without the ee suffix, i.e. `7.16.1`,\nset the `EE` build argument to `true` and\nthe `USER` and `PASSWORD` build argument to your enterprise credentials.\n\nIt is recommended that you `git checkout` the branch for the Camunda version\nyou would like to build. For example, if you want to build a Docker image for\nCamunda version `7.16.3`, first execute `git checkout 7.16` on this repository. \n\n**Note:** As the image uses a multi-stage Dockerfile the credentials are\n**not** part of the Docker image history of the final image. Be\naware that you should not distribute this image outside your company.\n\n```\ndocker build -t camunda-bpm-platform \\\n  --build-arg EE=true \\\n  --build-arg DISTRO=${DISTRO} \\\n  --build-arg VERSION=${VERSION} \\\n  --build-arg USER=${USER} \\\n  --build-arg PASSWORD=${PASSWORD} \\\n  .\n```\n\n### Build when behind a proxy\n\nYou can pass the following arguments to set proxy settings to Maven: \n\n* `MAVEN_PROXY_HOST`\n* `MAVEN_PROXY_PORT`\n* `MAVEN_PROXY_USER`\n* `MAVEN_PROXY_PASSWORD`\n\nExample for a released version of a community edition:\n\n```\ndocker build -t camunda-bpm-platform \\\n  --build-arg DISTRO=${DISTRO} \\\n  --build-arg VERSION=${VERSION} \\\n  --build-arg MAVEN_PROXY_HOST=${PROXY_HOST} \\\n  --build-arg MAVEN_PROXY_PORT=${PROXY_PORT} \\\n  --build-arg MAVEN_PROXY_USER=${PROXY_USER} \\\n  --build-arg MAVEN_PROXY_PASSWORD=${PROXY_PASSWORD} \\\n  .\n```\n### Override MySQL and PostgreSQL driver versions. \nBy 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\n\n```\ndocker build -t camunda-bpm-platform \\\n  --build-arg DISTRO=${DISTRO} \\\n  --build-arg VERSION=${VERSION} \\\n  --build-arg POSTGRESQL_VERSION=${POSTGRESQL_VERSION} \\\n  --build-arg MYSQL_VERSION=${MYSQL_VERSION} \\\n  .\n```\n\n## Use cases\n\n### Change configuration files\n\nYou can use docker volumes to link your own configuration files inside the\ncontainer.  For example, if you want to change the `bpm-platform.xml` on \nApache Tomcat:\n\n```\ndocker run -d --name camunda -p 8080:8080 \\\n           -v $PWD/bpm-platform.xml:/camunda/conf/bpm-platform.xml \\\n           camunda/camunda-bpm-platform:latest\n```\n\n### Add own process application\n\nIf you want to add your own process application to the docker container, you can\nuse Docker volumes. For example, if you want to deploy the [twitter demo][] \non Apache Tomcat:\n\n```\ndocker run -d --name camunda -p 8080:8080 \\\n           -v /PATH/TO/DEMO/twitter.war:/camunda/webapps/twitter.war \\\n           camunda/camunda-bpm-platform:latest\n```\n\nThis also allows you to modify the app outside the container, and it will\nbe redeployed inside the platform.\n\n\n### Clean distro without web apps and examples\n\nTo remove all web apps and examples from the distro and only deploy your\nown applications or your own configured cockpit also use Docker volumes. You\nonly have to overlay the deployment folder of the application server with\na directory on your local machine. So in Apache Tomcat, you would mount a \ndirectory to `/camunda/webapps/`:\n\n```\ndocker run -d --name camunda -p 8080:8080 \\\n           -v $PWD/webapps/:/camunda/webapps/ \\\n           camunda/camunda-bpm-platform:latest\n```\n\n\n## Extend Docker image\n\nAs we release these docker images on the official [docker registry][] it is\neasy to create your own image. This way you can deploy your applications\nwith docker or provided an own demo image. Just specify in the `FROM`\nclause which Camunda image you want to use as a base image:\n\n```\nFROM camunda/camunda-bpm-platform:tomcat-latest\n\nADD my.war /camunda/webapps/my.war\n```\n\n## Branching model\n\nBranches and their roles in this repository:\n\n- `next` (default branch) is the branch where new features and bugfixes needed \n  to support the current `master` of [camunda-bpm-platform repo](https://github.com/camunda/camunda-bpm-platform) go.\n- `7.x` branches get created from `next` when a Camunda Platform minor version\n  is released. They only receive backports of bugfixes when absolutely necessary.\n\n\n## License\n\nApache License, Version 2.0\n\n\n[twitter demo]: https://github.com/camunda-consulting/code/tree/master/one-time-examples/twitter\n[docker registry]: https://hub.docker.com/r/camunda/camunda-bpm-platform/\n[docker hub tags]: https://hub.docker.com/r/camunda/camunda-bpm-platform/tags/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda%2Fdocker-camunda-bpm-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamunda%2Fdocker-camunda-bpm-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda%2Fdocker-camunda-bpm-platform/lists"}