Docker Compose Integration#
In Docker Compose deployments, run the BaSyx Configuration Service after PostgreSQL is healthy and before regular BaSyx services start.
Warning
Use the same BaSyx version or build for basyxconfigurationservice and the runtime services.
Minimal Example#
services:
db:
image: postgres:16
container_name: postgres_db
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin123
POSTGRES_DB: basyxTestDB
healthcheck:
test: ["CMD-SHELL", "pg_isready -U admin -d basyxTestDB"]
interval: 5s
timeout: 5s
retries: 20
volumes:
- postgres_data:/var/lib/postgresql/data
basyx_configuration:
container_name: basyx_configuration
image: eclipsebasyx/basyxconfigurationservice-go:latest
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin123
POSTGRES_DBNAME: basyxTestDB
POSTGRES_MAXOPENCONNECTIONS: 50
POSTGRES_MAXIDLECONNECTIONS: 25
POSTGRES_CONNMAXLIFETIMEMINUTES: 5
depends_on:
db:
condition: service_healthy
submodelrepository:
image: eclipsebasyx/submodelrepository-go:latest
environment:
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin123
POSTGRES_DBNAME: basyxTestDB
depends_on:
basyx_configuration:
condition: service_completed_successfully
volumes:
postgres_data:
Startup Ordering#
Recommended ordering:
PostgreSQL starts.
PostgreSQL health check succeeds.
basyx_configurationruns and exits successfully.BaSyx services start.
Use condition: service_completed_successfully for services that depend on the database schema being initialized.
Warning
Mutable image tags such as latest and SNAPSHOT can change between restarts. If images are pulled fresh on restart, run basyx_configuration before DB-backed runtime services because schema requirements may have changed.
Pin exact image versions or image digests for reproducible deployments.
Custom Schema and Patch Paths#
The container image copies the repository database files into /app. By default, the service reads:
Base schema:
/app/base.sqlPatch directory:
/app/patches
For local or custom setups, override the command:
basyx_configuration:
image: eclipsebasyx/basyxconfigurationservice-go:latest
command:
- /app/basyxconfigurationservice
- -databaseSchema
- /custom/base.sql
- -customPatchPath
- /custom/patches
volumes:
- ./database:/custom:ro