This repository provides a modular, containerised deployment for the SeisComP earthquake processing system using Docker. Each SeisComP module is isolated in its own container for flexible scaling, maintainability, and reproducibility.
Note: This setup is based on Ubuntu 24.04. You may need to update Dockerfiles if you are using a different Ubuntu version.
Docker Engine >= 20.x
Git
Optional: X11 forwarding for scolv via SSHUse the provided script to clone SeisComP into your desired directory:
chmod +x clone.sh
./clone.sh <target-directory>Once the SeisComP source is downloaded, compress it into a seiscomp.tar.gz archive in the main Dockerfile directory (for use in the base image).
tar -czvf seiscomp.tar.gz <target-directory>Place your station inventory XML (e.g., GeoNet) inside the inventory/ folder.
chmod +x build.sh
./build.shThis builds the base SeisComP image: seiscomp:6.7.6
docker network create seiscomp-netdocker run -d \
--name seiscomp-db \
--network seiscomp-net \
-e POSTGRES_USER=sysop \
-e POSTGRES_PASSWORD=Ailove123 \
-e POSTGRES_DB=seiscomp \
-v pgdata:/var/lib/postgresql/data \
postgres:15This container acts as the database backend for SeisComP and the message bus (via scmp).
Each SeisComP module is maintained in its own dedicated folder following the pattern docker-/ (e.g., docker-scautopick/, docker-scmaster/, etc.).
Before building these Docker containers, make sure to prepare the following files for your network setup:
Inventory.xml: This contains your station metadata.
Config.xml: This includes station-specific configurations.
Once these files are prepared, add both Inventory.xml and Config.xml to the Files/ directory inside each relevant module folder (e.g., docker-scautopick/Files/).
After adding the files:
Update the Dockerfile in each module folder to copy these files into the appropriate location within the container (e.g., /home/sysop/seiscomp/inventory/ or /home/sysop/seiscomp/etc/).
Build the Docker image for the module to include the changes.
This setup ensures that each module has the correct station and configuration data embedded during the container build process.
Below is the command sequence:
cd docker-scevent/
docker build -t seiscomp-scevent:latest .
docker run -d --name scevent --network seiscomp-net seiscomp-scevent:latest
docker logs sceventcd docker-scamp/
docker build -t seiscomp-scamp:latest .
docker run -d --name scamp --network seiscomp-net seiscomp-scamp:latest
docker logs scampcd docker-scautoloc/
docker build -t seiscomp-scautoloc:latest .
docker run -d --name scautoloc --network seiscomp-net seiscomp-scautoloc:latestcd docker-scmag/
docker build -t seiscomp-scmag:latest .
docker run -d --name scmag --network seiscomp-net seiscomp-scmag:latestcd docker-scautopick/
docker build -t seiscomp-scautopick:latest .
docker run -d --name scautopick --network seiscomp-net seiscomp-scautopick:latestTo build this module, you do not need to pass the inventory or configuration files.
cd docker-scmaster/
docker build -t seiscomp-scmaster:latest .
docker run -d -p 222:22 --name scmaster --network seiscomp-net seiscomp-scmaster:latestBefore building the seedlink container, add the bindings to the folder named key in the docker-seedlink directory
cd docker-seedlink/
docker build -t seiscomp-seedlink:latest .
docker run -d --name seedlink --network seiscomp-net seiscomp-seedlink:latestdocker exec -u root -it scmaster bashsu sysopapt update && apt install -y postgresql-clientpsql -h seiscomp-db -U sysop -d seiscomp -f /home/sysop/seiscomp/share/db/postgres.sqlpsql -h seiscomp-db -U sysop -d seiscomp -c '\dt'seiscomp update-configThis loads the inventory and configuration into the database.
- Upload your MiniSEED file to the seedlink container
docker cp myfile.mseed seedlink:/home/sysop/seiscomp/groundMotionData/- Run simulation
docker exec -u sysop -it seedlink bash
seiscomp exec msrtsimul -v -m historic groundMotionData/myfile.mseed- Set password for sysop (first time only)
docker exec -u root -it scmaster bash
passwd sysop- Run scolv via SSH with X11 forwarding
ssh -X -p 222 sysop@localhost \
XDG_RUNTIME_DIR=/tmp/runtime-sysop \
/home/sysop/seiscomp/bin/seiscomp exec scolv \
-d postgresql://sysop:sysop@seiscomp-db/seiscomp --offlineYou should now see the SeisComP event visualisation interface.
✅ Final Notes
Once all modules are running, and SeedLink is feeding data, your Dockerised SeisComP system will operate just like a traditional monolithic setup—only now with full containerisation support, version control, and easier cloud deployments.