/dicomservices

Load balanced docker deployment of DICOM CStore service using DCM4CHEE

Primary LanguageJavaMIT LicenseMIT

Docker based Dicom CStore Service

This project demonstrate load balanced Docker deployment of DICOM CStore service.

Overview

DICOM CStore service implemented using DCM4CHEE Java library. Service is deployed inside Docker and instances are scaled and load balanced using nginx.

img.png

Build requirements

  • Java 17 or higher
  • Functioning Docker setup

Build instructions - Using multistage docker build

  • Checkout repository
     git clone https://github.com/madhub/dicomservices.git
  • Change to cstoreservice directory
     cd cstoreservice
  • Invoke multistage build
    docker build -t dicomdemos/dicomstorescp:1.0 -f Dockerfile-multistage .    ```
    

Regular Build instructions

  • Checkout repository
     git clone https://github.com/madhub/dicomservices.git
  • Change to cstoreservice directory
     cd cstoreservice
  • Build fat jar
    gradlew.bat clean jar
  • Build Docker image
    docker build -t dicomdemos/dicomstorescp:1.0 . 
  • Confirm Docker image is created successfully
    docker images

Deploying service into Docker

Service is deployed using docker-compose with nginx load balancing DICOM assoication across instances. By default nginx port 4040 published to host. Port 4040 used for all DICOM communications

  • Change to deployment\docker directory
   docker-compose up --scale dicomstorescp=3