The Imixs-Workflow project supports Docker and provides also a Docker image for the workflow management suite ‘Imixs-Office-Workflow‘. Imixs-Office-Workflow provides a full featured business process management suite and can also be used to be extended in various ways. With Docker it becomes easy to setup a custom build for development, test and productive environments.
Setup a New Custom Build
To setup a new custom build of Imixs-Office-Workflow you can use the Imixs-Office-Archetype maven project, which provides a simple starting point for custom development. To run you custom build using Docker you should add a docker folder into your project with the following structure:
-/.data -/.deployments -/configuration |-standalone.xml -docker-compose.yml -Dockerfile
Customize Wildfly standalone.xml
First you can use the standalone.xml file located in the /configuration folder to configure your wildfly server to your project needs. Typically this will be a data-pool configuration and a security realm. This is an example of a custom database pool configuration which can be run in a docker container to access a postgres database running in another Docker container:
... <datasource jta="true" jndi-name="java:/jdbc/office-test" pool-name="office-test" enabled="true" use-ccm="true"> <connection-url>jdbc:postgresql://postgres/office-test</connection-url> <driver-class>org.postgresql.Driver</driver-class> <driver>postgresql-9.3-1102.jdbc41.jar</driver> <security> <user-name>postgres</user-name> <password>adminadmin</password> </security> <validation> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <timeout> <set-tx-query-timeout>false</set-tx-query-timeout> <blocking-timeout-millis>0</blocking-timeout-millis> <idle-timeout-minutes>0</idle-timeout-minutes> <query-timeout>0</query-timeout> <use-try-lock>0</use-try-lock> <allocation-retry>0</allocation-retry> <allocation-retry-wait-millis>0</allocation-retry-wait-millis> </timeout> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource> ...
Note that the connection-url points to the host ‘postgres’ which need to be linked later to this container.
The Dockerfile
Next you can create a custom Dockerfile to describe you Imixs-Office-Workflow container for your custom build:
FROM imixs/office-workflow:latest # add custom standalone.xml file ADD configuration/standalone.xml /opt/wildfly/standalone/configuration/
The Dockerfile is quite simple. It extends the office imixs/office-workflow container and adds the new custom configuration file standalone.xml into the container
Docker-Compose
We use now docker-compose to describe the environment where we run a PostgreSQL Server, a WildFly Application Server and our custom build of Imixs-Office-Workflow.
postgresloml: image: postgres:9.4.6 environment: POSTGRES_PASSWORD: adminadmin POSTGRES_DB: office-test volumes: - ./.data/db:/var/lib/postgresql/data officetest: build: . environment: WILDFLY_PASS: adminadmin ports: - "8080:8080" - "9990:9990" links: - postgresloml:postgres volumes: - "./.deployments:/opt/wildfly/standalone/deployments"
The docker-compose.yml file describes the PostgreSQL container with a custom database named ‘office-test’ (see the standalone.xml file), and a new imixs/ofifce-workflow container running our custom build of Imixs-Office-Workflow. The volumes parameter binds the local ./deployments/ folder which is used for autodeployments our application artifacts and also to configure hot-deployment during the development phase.
To start the environment simply run:
docker-compose up
That’s it! Now you can deploy your application aretfact of Imixs-Office-Workflow together with ah postgresql-jdbc.jar file into the local ./deploymetns folder.
After you access Imixs-Office-Workflow from your web browser (http://localhost:8080/office-test) the default user account ‘admin’ with the default password ‘adminadmin’ will be created and can be changed from the Admin section