Skip to content
Vrinda Nayak edited this page May 31, 2017 · 138 revisions

Docker images

Repository Tag(s) Description
dcm4che/slapd-dcm4chee 2.4.40-10.2 slapd with schemas and default configuration for dcm4chee-arc 5.x
dcm4che/postgres-dcm4chee 9.4-10, 9.6-10 PostgreSQL 9.4/9.6 for dcm4che-arc 5.x
dcm4che/logstash-dcm4chee 5.2.2-3 Logstash 5.2.2 for dcm4che-arc 5.x
dcm4che/dcm4chee-arc-psql 5.10.2, 5.10.2-secure, 5.10.2-secure-ui, 5.10.2-logstash, 5.10.2-logstash-secure, 5.10.2-logstash-secure-ui dcm4chee-arc 5.x using PostgreSQL as DB

Docker Installation

Docker’s installation method differs based on one's platforms. Review Docker’s Installation guides for one's respective platform.

To make things unified across the various platforms, one may map dockerhost to the ip of where one's docker instance is running.

By default on Linux that will be 127.0.0.1, so one would add the following line to one's /etc/hosts file:

127.0.0.1 dockerhost

But on OSX and Windows it will be a unique IP that one can get by running boot2docker ip (i.e. 192.168.59.122). In that case the following should be added:

192.168.59.122 dockerhost

From now on one can use dockerhost in all of one's applications and get to it no matter what OS one is running on.

Run OpenLDAP Server

Before running the Archive container, start a container providing the LDAP server, e.g:

> $docker run --name slapd \
           -p 389:389 \
           -e LDAP_BASE_DN=dc=dcm4che,dc=org \
           -e LDAP_ORGANISATION=dcm4che.org \
           -e LDAP_ROOTPASS=secret \
           -e LDAP_CONFIGPASS=secret \
           -e ARCHIVE_DEVICE_NAME=dcm4chee-arc \
           -e AE_TITLE=DCM4CHEE \
           -e DICOM_HOST=dockerhost \
           -e DICOM_PORT=11112 \
           -e HL7_PORT=2575 \
           -e SYSLOG_HOST=logstash \
           -e SYSLOG_PORT=8512 \
           -e SYSLOG_PROTOCOL=UDP \
           -e STORAGE_DIR=/storage/fs1 \
           -v /var/local/dcm4chee-arc/ldap:/var/lib/ldap \
           -v /var/local/dcm4chee-arc/slapd.d:/etc/ldap/slapd.d \
           -d dcm4che/slapd-dcm4chee:2.4.40-10.2

Run PostgreSQL Server

Before running the Archive container, start a container providing the database server, e.g:

> $docker run --name postgres \
           -p 5432:5432 \
           -e POSTGRES_DB=pacsdb \
           -e POSTGRES_USER=pacs\
           -e POSTGRES_PASSWORD=pacs \
           -v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \
           -d dcm4che/postgres-dcm4chee:9.6-10

(Optional) Run Elastic Stack

If one wants to store DCM4CHEE Archive 5's System logs and Audit Messages in Elasticsearch one has to also start containers providing Elasticsearch, Logstash and Kibana:

Run Elasticsearch

> $docker run --name elasticsearch \
           -p 9200:9200 \
           -p 9300:9300 \
           -v /var/local/dcm4chee-arc/elasticsearch:/usr/share/elasticsearch/data \
           -d elasticsearch:5.2.2

Run Logstash

> $docker run --name logstash \
           -p 12201:12201/udp \
           -p 8514:8514/udp \
           -p 8514:8514 \
           -v /var/local/dcm4chee-arc/elasticsearch:/usr/share/elasticsearch/data \
           --link elasticsearch:elasticsearch \
           -d dcm4che/logstash-dcm4chee:5.2.2-3

Run Kibana

> $docker run --name kibana \
           -p 5601:5601 \
           --link elasticsearch:elasticsearch \
           -d kibana:5.2.2

Run DCM4CHEE Archive 5

One may choose between

  • a not secured version (Tag Name: 5.10.2),
  • a version with secured UI and secured RESTful services (Tag Name: 5.10.2-secure),
  • a version with secured UI, but not secured RESTful services (Tag Name: 5.10.2-secure-ui),
  • a not secured version with pre-configured GELF Logger to emit System logs to Logstash (Tag Name: 5.10.2-logstash),
  • a version with pre-configured GELF Logger and with secured UI and secured RESTful services (Tag Name: 5.10.2-logstash-secure) and
  • a version with pre-configured GELF Logger and with secured UI, but not secured RESTful services (Tag Name: 5.10.2-logstash-secure-ui).

One has to link the archive container with the OpenLDAP (alias:ldap) and the PostgreSQL (alias:db) container:

> $docker run --name dcm4chee-arc \
           -p 8080:8080 \
           -p 9990:9990 \
           -p 11112:11112 \
           -p 2575:2575 \
           -e LDAP_BASE_DN=dc=dcm4che,dc=org \
           -e LDAP_ROOTPASS=secret \
           -e LDAP_CONFIGPASS=secret \
           -e ARCHIVE_DEVICE_NAME=dcm4chee-arc \
           -e POSTGRES_DB=pacsdb \
           -e POSTGRES_USER=pacs\
           -e POSTGRES_PASSWORD=pacs \
           -e JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true" \
           -e WILDFLY_CHOWN="/opt/wildfly/standalone /storage" \
           -v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
           -v /var/local/dcm4chee-arc/storage:/storage \
           --link slapd:ldap \
           --link postgres:db \
           -d dcm4che/dcm4chee-arc-psql:5.10.2-secure-ui

If one wants to store DCM4CHEE Archive 5's System logs and Audit Messages in Elasticsearch, one has to also link the archive container with the Logstash (alias:logstash) container:

> $docker run --name dcm4chee-arc \
           -p 8080:8080 \
           -p 9990:9990 \
           -p 11112:11112 \
           -p 2575:2575 \
           -e LDAP_BASE_DN=dc=dcm4che,dc=org \
           -e LDAP_ROOTPASS=secret \
           -e LDAP_CONFIGPASS=secret \
           -e ARCHIVE_DEVICE_NAME=dcm4chee-arc \
           -e POSTGRES_DB=pacsdb \
           -e POSTGRES_USER=pacs\
           -e POSTGRES_PASSWORD=pacs \
           -e JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true" \
           -e WILDFLY_CHOWN="/opt/wildfly/standalone /storage" \
           -v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
           -v /var/local/dcm4chee-arc/storage:/storage \
           --link slapd:ldap \
           --link postgres:db \
           --link logstash:logstash \
           -d dcm4che/dcm4chee-arc-psql:5.10.2-logstash-secure-ui

Use Docker Compose

Alternatively one may use Docker Compose to take care for starting and linking the containers, by specifying the services in a configuration file docker-compose.yml (e.g.):

version: "2"
services:
  slapd:
    image: dcm4che/slapd-dcm4chee:2.4.40-10.2
    ports:
      - "389:389"
    env_file: docker-compose.env
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
      - /var/local/dcm4chee-arc/ldap:/var/lib/ldap
      - /var/local/dcm4chee-arc/slapd.d:/etc/ldap/slapd.d
  postgres:
    image: dcm4che/postgres-dcm4chee:9.6-10
    ports:
      - "5432:5432"
    env_file: docker-compose.env
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
      - /var/local/dcm4chee-arc/db:/var/lib/postgresql/data
  elasticsearch:
    image: elasticsearch:5.2.2
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
      - /var/local/dcm4chee-arc/elasticsearch:/usr/share/elasticsearch/data
  kibana:
    image: kibana:5.2.2
    ports:
      - "5601:5601"
    links:
      - elasticsearch:elasticsearch
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
  logstash:
    image: dcm4che/logstash-dcm4chee:5.2.2-3
    ports:
      - "12201:12201/udp"
      - "8514:8514/udp"
      - "8514:8514"
    links:
      - elasticsearch:elasticsearch
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
  dcm4chee-arc:
    image: dcm4che/dcm4chee-arc-psql:5.10.2-logstash-secure-ui
    ports:
      - "8080:8080"
      - "9990:9990"
      - "11112:11112"
      - "2575:2575"
    env_file: docker-compose.env
    environment:
      WILDFLY_CHOWN: /opt/wildfly/standalone /storage
      WILDFLY_WAIT_FOR: ldap:389 db:5432 logstash:8514
      AUTH_SERVER_URL: /auth
    links:
      - slapd:ldap
      - postgres:db
      - logstash:logstash
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
      - /var/local/dcm4chee-arc/storage:/storage
      - /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone

and environment in the referenced file docker-compose.env (e.g.):

LDAP_BASE_DN=dc=dcm4che,dc=org
LDAP_ORGANISATION=dcm4che.org
LDAP_ROOTPASS=secret
LDAP_CONFIGPASS=secret
ARCHIVE_DEVICE_NAME=dcm4chee-arc
AE_TITLE=DCM4CHEE
DICOM_HOST=localhost
DICOM_PORT=11112
HL7_PORT=2575
SYSLOG_HOST=logstash
SYSLOG_PORT=8514
SYSLOG_PROTOCOL=TLS
STORAGE_DIR=/storage/fs1
POSTGRES_DB=pacsdb
POSTGRES_USER=pacs
POSTGRES_PASSWORD=pacs
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=admin

and starting them by

> $docker-compose up -d

Web Service URLs

Clone this wiki locally