Advanced SDL

Advanced configuration options and patterns.

Environment Variables

services:
  api:
    image: node:20-alpine
    env:
      - NODE_ENV=production
      - PORT=3000
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
      - API_KEY=secret123

Security

Environment variables are visible in manifest. Don't put sensitive secrets here in production. Use volume-mounted config files or secrets management service instead.

Multi-Service Deployments

services:
  api:
    image: node:20-alpine
    expose:
      - port: 3000
        as: 3000
        to:
          - global: true
    env:
      - DATABASE_URL=postgres://db:5432/app

  db:
    image: postgres:15-alpine
    env:
      - POSTGRES_PASSWORD=changeme
    params:
      storage:
        data:
          mount: /var/lib/postgresql/data
          source: uploads

profiles:
  compute:
    api:
      resources:
        cpu:
          units: 1
        memory:
          size: 1Gi
    db:
      resources:
        cpu:
          units: 0.5
        memory:
          size: 2Gi
        storage:
          - size: 10Gi

deployment:
  api:
    anywhere:
      profile: api
      count: 1
  db:
    anywhere:
      profile: db
      count: 1

Services in the same deployment can communicate via service names as hostnames. The API can connect to db:5432 using Docker's built-in DNS.

Resource Profiles

Define different resource profiles for different service types:

profiles:
  compute:
    # Lightweight web server
    web:
      resources:
        cpu:
          units: 0.25
        memory:
          size: 256Mi

    # Memory-intensive API
    api:
      resources:
        cpu:
          units: 2
        memory:
          size: 4Gi

    # Database with storage
    database:
      resources:
        cpu:
          units: 1
        memory:
          size: 2Gi
        storage:
          - size: 50Gi

Placement Constraints

Control where your deployments run:

deployment:
  web:
    anywhere:           # Run on any available provider
      profile: web
      count: 1

    # Future: region-specific placement
    # us-east:
    #   profile: web
    #   count: 2