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.
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
- Verify the DICOM connectivity
- Using DCMTK tools
echoscu localhost 4040
- Using DCM4CHEE Tools
storescu -c store-scp@localhost:4040
Deploying service into KubernetesDeploying service into Kubernetes
- Using DCMTK tools