Implementation

Dapr


dapr.tpl (view on GitHub) :

- op: set
  path: services.placement
  value:
    image: ghcr.io/dapr/placement:latest
    command: ["./placement", "--port", "50006"]
    ports:
    - target: 50006
      published: "50006"
- op: set
  path: services.scheduler
  value:
    image: ghcr.io/dapr/scheduler:latest
    command: ["./scheduler", "--port", "50007", "--etcd-data-dir", "/data"]
    ports:
    - target: 50007
      published: "50007"
    user: root
    volumes:
    - type: bind
      source: ./dapr-etcd-data/
      target: /data
{{ range $name, $cfg := .Compose.services }}
{{ if dig "annotations" "dapr.io/enabled" false $cfg }}
- op: set
  path: services.{{ $name }}-sidecar
  value:
    image: ghcr.io/dapr/daprd:latest
    command: ["./daprd", "--app-id={{ dig "annotations" "dapr.io/app-id" "" $cfg }}", "--app-port={{ dig "annotations" "dapr.io/app-port" "" $cfg }}", "--enable-api-logging={{ dig "annotations" "dapr.io/enable-api-logging" false $cfg }}", "--placement-host-address=placement:50006", "--scheduler-host-address=scheduler:50007", "--resources-path=/components"]
    network_mode: service:{{ $name }}
    volumes:
    - type: bind
      source: .score-compose/mounts/components/
      target: /components
    depends_on:
      placement:
        condition: service_started
        required: true
{{ end }}
{{ end }}