Skip to content

Configuration

Strawly's deployment is controlled by a single file: strawly-deployment.yml. You edit this file to choose which modules to enable, set ports, and configure schedules. The deployment scripts read this file and generate the Docker Compose configuration automatically.

strawly-deployment.yml structure

version: "1.0"

core:
  backend:
    enabled: true   # always true — cannot be disabled
    port: 3001
    image: git.strawly.app/Strawly/strawly-backend:latest

  frontend:
    enabled: true   # always true — cannot be disabled
    port: 3000
    image: git.strawly.app/Strawly/strawly-frontend:latest

database:
  provider: postgresql
  host: postgres
  port: 5432
  database: strawly

modules:
  optimizations-azure:
    enabled: true                 # set to false to skip this module
    port: 3002
    image: git.strawly.app/Strawly/optimizations-azure:latest
    settingsKey: optimizations:azure   # registry key override (optional)
    serviceUrl: http://optimizations-azure:3002   # frontend reaches the service here (optional)

    metadata:
      displayName: "Azure Optimizations"
      icon: "☁️"
      description: "Runs custom optimization scripts against Azure subscriptions using Azure metrics"
      provider: azure
      category: optimizations
      version: "0.1.0"

    env:
      NODE_ENV: production

    depends_on:
      - backend
      - postgres

Core section

The core section configures the two services that are always deployed.

Field Description Default
core.backend.port Host port for the backend API 3001
core.frontend.port Host port for the frontend UI 3000

To change a port, update the value here, regenerate, and redeploy:

npm run generate-compose
docker compose -f docker-compose.generated.yml up -d

Also update the corresponding *_PORT variable in .env if you change the backend port, and update CORS_ORIGIN to match the new frontend port.

Modules section

Each key under modules corresponds to an optional module. The module name (e.g. optimizations-azure) must match the key used in the module registry.

Common module fields

Field Description
enabled true to deploy, false to skip
port Host port the module listens on
image Docker image reference
settingsKey Optional. Overrides the registry key (otherwise derived from the module name)
serviceUrl Optional. URL the frontend uses to reach the service. Defaults to http://<module-name>:<port>
metadata Display name, icon, description, provider, category, and version shown in the UI
env Environment variables passed to the module container
depends_on Services the module waits on

After any configuration change

Always regenerate the compose file after editing strawly-deployment.yml, then re-run the registry seeder so the UI reflects any enabled or disabled modules:

npm run generate-compose
docker compose -f docker-compose.generated.yml up -d
npm run seed-modules

For module removals, add --remove-orphans to clean up stopped containers:

docker compose -f docker-compose.generated.yml up -d --remove-orphans
npm run seed-modules