Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/dagster-io/dagster/llms.txt

Use this file to discover all available pages before exploring further.

Deployment Overview

Dagster provides flexible deployment options for running data pipelines in production. This guide covers the core architecture and available deployment strategies.

Architecture Components

A production Dagster deployment consists of three essential long-running services:
1

Dagster Webserver

The webserver serves the UI and responds to GraphQL queries. It can run with multiple replicas for high availability.
dagster-webserver -h 0.0.0.0 -p 3000 -w workspace.yaml
2

Dagster Daemon

The daemon manages schedules, sensors, and run queuing. Only one daemon instance should run per deployment.
dagster-daemon run
3

Code Location Servers

Code location servers expose your Dagster definitions via gRPC. Each code location runs as a separate service.
dagster api grpc -h 0.0.0.0 -p 4000 -f definitions.py

Persistent Storage

Dagster requires persistent storage for run history, schedules, and event logs. Production deployments should use PostgreSQL:
dagster.yaml
run_storage:
  module: dagster_postgres.run_storage
  class: PostgresRunStorage
  config:
    postgres_db:
      hostname: postgres_host
      username:
        env: DAGSTER_POSTGRES_USER
      password:
        env: DAGSTER_POSTGRES_PASSWORD
      db_name:
        env: DAGSTER_POSTGRES_DB
      port: 5432

schedule_storage:
  module: dagster_postgres.schedule_storage
  class: PostgresScheduleStorage
  config:
    postgres_db:
      hostname: postgres_host
      username:
        env: DAGSTER_POSTGRES_USER
      password:
        env: DAGSTER_POSTGRES_PASSWORD
      db_name:
        env: DAGSTER_POSTGRES_DB
      port: 5432

event_log_storage:
  module: dagster_postgres.event_log
  class: PostgresEventLogStorage
  config:
    postgres_db:
      hostname: postgres_host
      username:
        env: DAGSTER_POSTGRES_USER
      password:
        env: DAGSTER_POSTGRES_PASSWORD
      db_name:
        env: DAGSTER_POSTGRES_DB
      port: 5432

Deployment Options

Dagster supports multiple deployment strategies:

Docker

Run Dagster components as Docker containers with Docker Compose or container orchestration platforms. Ideal for local development and smaller deployments. Learn more about Docker deployment →

Kubernetes

Deploy to Kubernetes using the official Helm chart. Recommended for production workloads requiring scalability and high availability. Learn more about Kubernetes deployment →

Cloud Platforms

Dagster can be deployed to AWS ECS, Google Cloud Run, Azure Container Instances, or other cloud platforms.

Job Execution Flow

When a job is launched, it flows through several components:
1

Run Coordinator

Receives the run request from the webserver and queues it for execution.
dagster.yaml
run_coordinator:
  module: dagster.core.run_coordinator
  class: QueuedRunCoordinator
  config:
    max_concurrent_runs: 5
2

Run Launcher

The daemon picks up queued runs and launches them using the configured run launcher (Docker, Kubernetes, etc.).
dagster.yaml
run_launcher:
  module: dagster_docker
  class: DockerRunLauncher
  config:
    network: dagster_network
3

Run Worker

The launched container/pod executes the job, traversing the graph and executing each operation.

Configuration Levels

Dagster configuration is organized into three levels:
LevelFileDescription
Instancedagster.yamlDeployment-wide configuration for storage, run launcher, and daemon settings
Workspaceworkspace.yamlCode location server addresses and connection details
Job RunRun configJob-specific configuration for resources, ops, and assets
The instance and workspace configuration files should be mounted into all Dagster services (webserver, daemon, and code location servers).

Next Steps

Choose a deployment option to get started: