Implementation:Datahub project Datahub Docker CLI Quickstart
| 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