This repository contains the beamline-specific configuration and services for the rsoxs beamline. It is designed to work with the nbs-pods framework.
- nbs-pods repository cloned in the same parent directory as this repository
- Docker and docker-compose installed
compose/
: Contains beamline-specific services and overridesbeamline/
: Beamline-specific servicesoverride/
: Customizations of nbs-pods services
config/
: Contains beamline-specific configurationscripts/
: Contains deployment and utility scriptsdeploy.sh
: Main deployment scriptservices.sh
: Defines beamline-specific services
The services.sh
file declares which services are specific to your beamline.
This file is sourced by deploy.sh
and should define a BEAMLINE_SERVICES
array.
Each service listed in this array should have a corresponding directory in compose/beamline/
.
For example, if your beamline has a custom detector service:
# scripts/services.sh
BEAMLINE_SERVICES=(
"custom-detector" # Uses compose/beamline/custom-detector/
)
Each service can have up to three configuration files:
-
docker-compose.yml
: Base configuration- Required for all services
- Contains the core service definition
-
docker-compose.override.yml
: Standard overrides- Optional
- Always applied if present
- Use for permanent customizations
-
docker-compose.development.yml
: Development settings- Optional
- Only applied when using
--dev
flag - Use for development-specific settings (volumes, ports, etc.)
For example, to override a base service from nbs-pods:
compose/
└── override/
└── bsui/
├── docker-compose.yml # Base configuration
├── docker-compose.override.yml # Always applied
└── docker-compose.development.yml # Applied with --dev flag
To start all services:
./scripts/deploy.sh start # Normal mode
./scripts/deploy.sh start --dev # Development mode
To start specific services:
./scripts/deploy.sh start service1 service2
./scripts/deploy.sh start service1 --dev service2 # service2 in dev mode
To stop all services:
./scripts/deploy.sh stop
- Edit
config/ipython/profile_default/startup/beamline.toml
to configure beamline settings - Edit
config/ipython/profile_default/startup/devices.toml
to configure devices - Add beamline-specific services in
compose/beamline/
- Define beamline services in
scripts/services.sh