Run the Docker Image

Now, we will run the Axon Ivy Engine with a separate container that holds the system database - in this case, we use PostgreSQL. Create a new folder somewhere in your file system and copy-paste the following files to it:

compose.yaml

services:
  ivy:
    image: axonivy/axonivy-engine:12.0    
    ports:
     - 8080:8080
    volumes:
     # mount persistent file areas so that deployed applications,
     # changed configuration and runtime data don't get lost if the
     # container gets destroyed
     - ivy-apps:/ivy/applications
     - ivy-config:/ivy/configuration
     - ivy-data:/ivy/data

     # ivy configuration
     - ./ivy.yaml:/ivy/configuration/ivy.yaml

     # your licence
     - ./licence.lic:/ivy/configuration/licence.lic

  postgres:
    image: postgres:17
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: 1234
    volumes:
     - postgres-data:/var/lib/postgresql/data

volumes:
  ivy-apps:
    name: ivy-apps
  ivy-config:
    name: ivy-config
  ivy-data:
    name: ivy-data
  postgres-data:
    name: postgres-data

ivy.yaml

# ivy configuration file which defines the postgres
# container as system database
SystemDb:
  Driver: org.postgresql.Driver
  Url: jdbc:postgresql://postgres:5432/AxonIvySystemDatabase
  UserName: admin
  Password: 1234
  Autoconvert: false
Administrators:
  admin:
    Password: admin

Provide a valid license file in the same folder with the name licence.lic. If you don’t supply a license, then this example will still work, but the Axon Ivy Engine will run in demo mode.

Open a terminal and execute docker-compose up in the folder where you saved compose.yaml. After startup, the engine is available at http://localhost:8080.