Installation Guide

Imixs-Office-Workflow provides a Docker Container to run the service in any Container Environment. With this Installation guide you will find some typical setups for different situations.

To follow the installation you should be familiar with the corresponding container environment.

Installation With Docker-Compose

Imixs-Office-Workflow is provided in Docker images and can be simply started with Docker or Docker-Compose. You will find the lates Docker images on the Docker-Hub Repository.

  1. Create a working directory on you machine (e.g. /office-workflow/)
  2. Copy the docker-compose.yml file into work working directory

docker-compose.yml

version: "3.6"
services:
  db:
    image: postgres:9.6.1
    environment:
      POSTGRES_PASSWORD: adminadmin
      POSTGRES_DB: office
    volumes: 
      - dbdata:/var/lib/postgresql/data
  imixs-documents:
    image: imixs/imixs-documents:latest
    depends_on:
      - db
    environment:
      JAVA_OPTS: "-Dnashorn.args=--no-deprecation-warning"
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "adminadmin"
      POSTGRES_CONNECTION: "jdbc:postgresql://db/office"      
      TZ: "Europe/Berlin"
      MAILGATEWAY: "localhost"
    ports:
      - "8080:8080"
volumes:
  dbdata: 

Run the Application

To start Imixs-Office-Workflow run the following docker command from your working directory:

$ docker-compose up

This will start the database and the application server. After a few minutes you access the application from your web browser:

http://localhost:8080/

You can login with the default account ‘admin’ with the password ‘adminadmin’. Follow the Setup Guide to setup a new Instance of Imixs-Office-Workflow.

Kubernetes Deployment

Imixs-Documents provides a base deployment configuration for Kubernetes. The setup is based on Kustomize providing a declarative object management.

Deploy

To create the deployment objects from the base-deployment run:

$ kubectl apply --kustomize https://github.com/imixs/imixs-documents/kubernetes/

The service endpoint of Imixs-Documents will be published on port 8080. This basic deployment configuration assumes that a default storage class is defined within your kubernetes cluster. This storage class will be used for the database storage and the search index. You can customize the service and persistence volume configuration to your needs by using a custom setup.

Custom Setups

To create a custom deployment create an overlay with custom settings based on the base deployment. First create a new folder with the file kustomization.yaml:

namespace: my-application
bases:
- https://github.com/imixs/imixs-documents/kubernetes/

resources:
- 031-network.yaml

patchesStrategicMerge:
- 010-deployment.yaml

The kustomization.yaml file simply points into the base directory hosted on github. It defines the new namespace ‘my-application’ where the resource objects will be created. Within this directory you can define new resources or resources to be merged in a existing resource.

So will have the following directory structure:

.
├── my-deployment
│   ├── 010-deployment.yaml
│   ├── 031-network.yaml
│   └── kustomization.yaml

You can now build the overlay with:

$ kubectl apply --kustomize  ./my-deployment

In this example the file 010-deployment.yaml adds a new additional environment variable with the name “ARCHIVE_SERVICE_ENDPOINT” to the imixs-documents deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: imixs-documents
  labels: 
    app: imixs-documents
spec:
  template:
    spec:
      containers:
        - name: imixs-documents
          env:
            - name: ARCHIVE_SERVICE_ENDPOINT
              value: "http://imixs-archive:8080/api"

This shows how you can overwrite or extend existing deployment settings.

The file 031-network.yaml defines a new ingress configuration to publish the sevice endpoint of Imixs-Documents to a public or private Internet address:

---
###################################################
# Ingress
###################################################
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: documents-imixs-tls
spec:
  rules:
  - host: documents.foo.com
    http:
      paths:
      - path: /
        backend:
          serviceName: imixs-documents
          servicePort: 8080

This resource will be added to the base deployment.

You can find further details about Kustomize here.

More Docker Images

If you need more functionality Imixs provides a lot of additional Docker images in the Docker-Hub Repository. You will find technical details about the setup on the corresponding Github Pages