Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Datahub project Datahub Docker CLI Quickstart

From Leeroopedia


Field Value
Implementation Name Docker CLI Quickstart
Namespace Datahub_project_Datahub
Workflow Docker_Quickstart_Deployment
Type API Doc
Language Python
Last Updated 2026-02-10
Source Repository datahub-project/datahub
Source File metadata-ingestion/src/datahub/cli/docker_cli.py, lines 461-797
Domains Deployment, Docker, Metadata_Management

Overview

The quickstart() function is the primary CLI command for launching a complete DataHub instance locally using Docker Compose. It handles version resolution, compose file download, preflight checks, image pulling, container orchestration, and health polling.

Function Signature

@docker.command()
@click.option("--version", type=str, default="default", ...)
@click.option("--pull-images/--no-pull-images", type=bool, is_flag=True, default=True, ...)
@click.option("-f", "--quickstart-compose-file", type=click.Path(...), default=[], multiple=True, ...)
@click.option("--dump-logs-on-failure", type=bool, is_flag=True, default=False, ...)
@click.option("--mysql-port", type=_ClickPositiveInt, default=None, ...)
@click.option("--kafka-broker-port", type=_ClickPositiveInt, default=None, ...)
@click.option("--elastic-port", type=_ClickPositiveInt, default=None, ...)
@click.option("--stop", type=bool, is_flag=True, default=False, ...)
@click.option("--backup", is_flag=True, default=False, ...)
@click.option("--backup-file", type=click.Path(...), default="~/.datahub/quickstart/backup.sql", ...)
@click.option("--restore", is_flag=True, default=False, ...)
@click.option("--restore-file", type=str, default="~/.datahub/quickstart/backup.sql", ...)
@click.option("--restore-indices", is_flag=True, default=False, ...)
@click.option("--no-restore-indices", is_flag=True, default=False, ...)
@click.option("--arch", required=False, ...)
def quickstart(
    version: Optional[str],
    pull_images: bool,
    quickstart_compose_file: List[pathlib.Path],
    dump_logs_on_failure: bool,
    mysql_port: Optional[int],
    kafka_broker_port: Optional[int],
    elastic_port: Optional[int],
    stop: bool,
    backup: bool,
    backup_file: str,
    restore: bool,
    restore_file: str,
    restore_indices: bool,
    no_restore_indices: bool,
    arch: Optional[str],
) -> None:

CLI Usage

datahub docker quickstart [OPTIONS]

Parameters

Parameter Type Default Description
--version str "default" DataHub version to deploy. Use "stable" for latest stable. Prefixes "v" if missing.
--pull-images / --no-pull-images bool True Whether to pull container images from Docker Hub before starting.
-f, --quickstart-compose-file Path (multiple) [] Custom local docker-compose file(s). Overrides GitHub download.
--dump-logs-on-failure bool False Print docker-compose logs to console on failure.
--mysql-port int None Override MySQL mapped port (default 3306).
--kafka-broker-port int None Override Kafka broker mapped port (default 9092).
--elastic-port int None Override Elasticsearch mapped port (default 9200).
--stop bool False Stop running containers without destroying them.
--backup bool False Backup MySQL database to file.
--backup-file Path ~/.datahub/quickstart/backup.sql Backup output file path.
--restore bool False Restore MySQL database from backup file.
--restore-file str ~/.datahub/quickstart/backup.sql Restore input file path.
--restore-indices bool False Rebuild search indices from database.
--no-restore-indices bool False Skip index rebuild during restore.
--arch str None Architecture override (x86, arm64, m1, m2).

Return Value

Returns None. Exits with code 1 on failure via sys.exit(1) or by raising QuickstartError.

Internal Constants

Constant Value Description
QUICKSTART_COMPOSE_FILE "docker/quickstart/docker-compose.quickstart-profile.yml" Path within GitHub repo for compose file.
_QUICKSTART_MAX_WAIT_TIME 10 minutes Maximum time to wait for containers to become healthy.
_QUICKSTART_UP_TIMEOUT 100 seconds Timeout for each docker compose up invocation.
_QUICKSTART_STATUS_CHECK_INTERVAL 2 seconds Interval between health status polls.

Execution Flow

1. Early Exit Branches (lines 601-618)

If --backup, --restore, or --restore-indices flags are set, the function delegates to _backup() or _restore() and returns early.

2. Version Resolution (lines 620-625)

quickstart_versioning = QuickstartVersionMappingConfig.fetch_quickstart_config()
quickstart_execution_plan = quickstart_versioning.get_quickstart_execution_plan(version)

3. Preflight Checks (lines 628-629)

with get_docker_client() as client:
    run_quickstart_preflight_checks(client)

4. Compose File Download (lines 642-648)

If no custom compose file is provided, downloads from GitHub based on the resolved version's composefile_git_ref.

5. Upgrade Compatibility (line 651)

if not _check_upgrade_and_show_instructions(quickstart_compose_file):
    sys.exit(1)

6. Environment Variables (lines 655-660)

Sets DATAHUB_VERSION, port mappings, METADATA_SERVICE_AUTH_ENABLED=false, and UI_INGESTION_DEFAULT_CLI_VERSION.

7. Image Pull (lines 677-714)

Runs docker compose pull with optional quiet mode. Failures are non-fatal -- the system attempts to proceed with locally cached images.

8. Health Polling Loop (lines 717-783)

while (datetime.datetime.now() - start_time) < _QUICKSTART_MAX_WAIT_TIME:
    if up_attempts == 0 or (status and status.needs_up()):
        # Run docker compose up -d --remove-orphans
        up_process = subprocess.Popen(base_command + ["up", "-d", "--remove-orphans"], ...)
    status = check_docker_quickstart()
    if status.is_ok():
        break
    time.sleep(_QUICKSTART_STATUS_CHECK_INTERVAL.total_seconds())

9. Success Output (lines 785-796)

On success, reports the frontend URL (http://localhost:9002) with default credentials (datahub/datahub).

Environment Variables Set

Variable Description
DATAHUB_VERSION Resolved Docker image tag
DATAHUB_MAPPED_MYSQL_PORT Custom MySQL port mapping
DATAHUB_MAPPED_KAFKA_BROKER_PORT Custom Kafka port mapping
DATAHUB_MAPPED_ELASTIC_PORT Custom Elasticsearch port mapping
METADATA_SERVICE_AUTH_ENABLED Set to "false" for quickstart
UI_INGESTION_DEFAULT_CLI_VERSION CLI version for UI ingestion
DOCKER_BUILDKIT Set to "1"
DOCKER_DEFAULT_PLATFORM Set to "linux/{machine_arch}"

Usage Examples

# Default quickstart
datahub docker quickstart

# Specific version
datahub docker quickstart --version v0.14.0

# Stable release
datahub docker quickstart --version stable

# Custom ports to avoid conflicts
datahub docker quickstart --mysql-port 3307 --kafka-broker-port 9093 --elastic-port 9201

# Stop without destroying
datahub docker quickstart --stop

# Backup current state
datahub docker quickstart --backup --backup-file ~/my-backup.sql

# Restore from backup
datahub docker quickstart --restore --restore-file ~/my-backup.sql

Knowledge Sources

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment