Installation using Docker

The Institute of Medical Informatics of the Goethe University Frankfurt provides two separate Docker images for the local components of an OSSE patient registry. One image for installing and running the OSSE EDC and one image for the Mainzelliste. The images are currently available from the IMI's own Docker repository at docker.mig-frankfurt.de. A database image is also provided. Although it is possible to use a generic PostgreSQL image instead, the provided image makes the initialisation of the databases easier.

OSSE EDC

OSSE EDC images are tagged with an exact version number of the OSSE EDC. The latest tag always represents the latest version of OSSE EDC. The OSSE EDC uses semantic versioning and tags are also available for major and minor application versions.

To run OSSE EDC from your server create a Docker Compose file based on the example below and change the following parameters according to your environment.

  • Name and IP range of the Docker network and IP addresses of the containers.
  • Replace the URLs https://my-registry.example.com and `https://mzl.my-registry.example.com with the correct URLs for your installation. You can also use IP addresses instead of domain names.
  • Change the value of the environment variable REGISTRY_PASSWORD to a secure password string (e.g. 32 random characters). This password will be used for authentication of the OSSE EDC against other components. It usually won't be used by a human user.
  • Change the values of the environment variables SHARE_ADMIN_PASS, SHARE_EXPORTER_PASS, API_KEY_EXPORT and API_KEY to random strings (e.g. 32 random alphanumeric characters). These passwords are set during database initialization and have to be entered in the OSSE EDC for authentication purposes once it is running.

Example of a minimal Docker compose file for running the OSSE EDC:

version: '2.0'

services:
  db_edc:
    image: docker.mig-frankfurt.de/samply/db:15
    restart: unless-stopped
    environment:
      - POSTGRES_PASSWORD=postgres
      - DIST=test
      - STORE_REST_HOST=https://my-registry.example.com/store-rest
      - EDC_HOST=https://my-registry.example.com
      - SHARE_ADMIN_PASS=%%%CHANGEME%%%
      - SHARE_EXPORTER_PASS=%%%CHANGEME%%%
      - API_KEY=%%%CHANGEME%%%
      - API_KEY_EXPORT=%%%CHANGEME%%%
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - db_edc:/var/lib/postgresql/data:z
    networks:
      osse-net:
        ipv4_address: 192.168.42.10

  edc:
    image: docker.mig-frankfurt.de/samply/edc:3
    restart: unless-stopped
    environment:
      - DIST=test
      - MAINZELLISTE_HOST=https://mzl.my-registry.example.com
      - EDC_HOST=https://my-registry.example.com
      - SHARE_REST_HOST=https://my-registry.example.com/osse-share
      - DB_HOST=192.168.42.10
      - SHARE_DB_HOST=192.168.42.10
      - REGISTRY_PASSWORD=%%%CHANGEME%%%
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - ./data/edc/log/osse:/var/log/osse:z
      - ./certs:/certs
      - ./custom:/custom
    depends_on:
      - db_edc
    networks:
      osse-net:
        ipv4_address: 192.168.42.8

networks:
  osse-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.42.0/24

volumes:
  db_edc:

Mainzelliste

The Mainzelliste images for OSSE are tagged with an exact version number of the Mainzelliste. There is currently no latest tag for the Mainzelliste for OSSE Docker image. The Mainzelliste uses semantic versioning and tags are also available for major and minor application versions.

To run the Mainzelliste for OSSE from your server create a Docker Compose file based on the example below and change the following parameters according to your environment.

  • Name and IP range of the Docker network and IP addresses of the containers.
  • Change the value of the environment variable ALLOWED_REMOTE_ADDRESSES to the IP address of the OSSE EDC server.
  • Change the value of the environment variable ALLOWED_ORIGINS to the URL that is used to access the OSSE EDC.
  • Change the values of the environment variable APIKEY to a random string (e.g. 32 random alphanumeric characters). The API key has to be entered in the OSSE EDC for authentication against the Mainzelliste once it is running.

Example of a minimal Docker compose file for running the Mainzelliste for OSSE:

version: '2.0'

services:
  db_mzl:
    image: docker.mig-frankfurt.de/samply/db:15
    restart: unless-stopped
    environment:
      - POSTGRES_PASSWORD=postgres
      - DIST=test
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - db_mzl:/var/lib/postgresql/data:z
    networks:
      osse-net:
        ipv4_address: 192.168.42.10

  mzl:
    image: docker.mig-frankfurt.de/pseudonymization/mainzelliste:1.8-OSSE
    restart: unless-stopped
    environment:
      - ALLOWED_REMOTE_ADDRESSES=172.16.17.18
      - ALLOWED_ORIGINS=https://my-registry.example.com
      - DB_HOST=192.168.42.10
      - APIKEY=%%%CHANGEME%%%
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - ./data/mzl/log/mainzelliste:/var/log/mainzelliste:z
    depends_on:
      - db_mzl
    networks:
      osse-net:
        ipv4_address: 192.168.42.9

networks:
  osse-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.42.0/24

volumes:
  db_mzl:

OSSE EDC & Mainzelliste on the same server

For testing and evaluation purposes it might be easier and quicker to install OSSE EDC and the Mainzelliste on the same server. The same PostgreSQL container can then be used for both applications. The data of both systems needs to be placed in two separate databases with different credentials.

Create a combined Docker Compose file from the examples above and change the relevant entries accordingly.