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