Quickstart: allow passing DATABASE_STRING as parameter (#4580)

This commit is contained in:
Stanislav Novosad
2026-01-30 11:38:34 -07:00
committed by GitHub
parent 6b6b546c5d
commit 6796e36c40
3 changed files with 37 additions and 14 deletions

View File

@@ -104,6 +104,13 @@ This is most helpful for first time run (db setup, db migrations etc).
skyvern quickstart skyvern quickstart
``` ```
If you already have a database you want to use, pass a custom connection string to skip the
local Docker PostgreSQL setup:
```bash
skyvern quickstart --database-string "postgresql+psycopg://user:password@localhost:5432/skyvern"
```
### 3. Run task ### 3. Run task
#### UI (Recommended) #### UI (Recommended)

View File

@@ -21,6 +21,11 @@ from .mcp import setup_local_organization, setup_mcp
def init_env( def init_env(
no_postgres: bool = typer.Option(False, "--no-postgres", help="Skip starting PostgreSQL container"), no_postgres: bool = typer.Option(False, "--no-postgres", help="Skip starting PostgreSQL container"),
database_string: str = typer.Option(
"",
"--database-string",
help="Custom database connection string (e.g., postgresql+psycopg://user:password@host:port/dbname). When provided, skips Docker PostgreSQL setup.",
),
) -> bool: ) -> bool:
"""Interactive initialization command for Skyvern.""" """Interactive initialization command for Skyvern."""
console.print( console.print(
@@ -40,6 +45,11 @@ def init_env(
run_local = infra_choice == "local" run_local = infra_choice == "local"
if run_local: if run_local:
if database_string:
console.print("🔗 [bold blue]Using custom database connection...[/bold blue]")
update_or_add_env_var("DATABASE_STRING", database_string)
console.print("✅ [green]Database connection string set in .env file.[/green]")
else:
setup_postgresql(no_postgres) setup_postgresql(no_postgres)
console.print("📊 [bold blue]Running database migrations...[/bold blue]") console.print("📊 [bold blue]Running database migrations...[/bold blue]")
migrate_db() migrate_db()

View File

@@ -33,13 +33,19 @@ def check_docker() -> bool:
def quickstart( def quickstart(
ctx: typer.Context, ctx: typer.Context,
no_postgres: bool = typer.Option(False, "--no-postgres", help="Skip starting PostgreSQL container"), no_postgres: bool = typer.Option(False, "--no-postgres", help="Skip starting PostgreSQL container"),
database_string: str = typer.Option(
"",
"--database-string",
help="Custom database connection string (e.g., postgresql+psycopg://user:password@host:port/dbname). When provided, skips Docker PostgreSQL setup.",
),
skip_browser_install: bool = typer.Option( skip_browser_install: bool = typer.Option(
False, "--skip-browser-install", help="Skip Chromium browser installation" False, "--skip-browser-install", help="Skip Chromium browser installation"
), ),
server_only: bool = typer.Option(False, "--server-only", help="Only start the server, not the UI"), server_only: bool = typer.Option(False, "--server-only", help="Only start the server, not the UI"),
) -> None: ) -> None:
"""Quickstart command to set up and run Skyvern with one command.""" """Quickstart command to set up and run Skyvern with one command."""
# Check Docker # Check Docker only if not using custom database
if not database_string:
with console.status("Checking Docker installation...") as status: with console.status("Checking Docker installation...") as status:
if not check_docker(): if not check_docker():
console.print( console.print(
@@ -59,7 +65,7 @@ def quickstart(
try: try:
# Initialize Skyvern # Initialize Skyvern
console.print("\n[bold blue]Initializing Skyvern...[/bold blue]") console.print("\n[bold blue]Initializing Skyvern...[/bold blue]")
run_local = init_env(no_postgres=no_postgres) run_local = init_env(no_postgres=no_postgres, database_string=database_string)
# Skip browser installation if requested # Skip browser installation if requested
if not skip_browser_install: if not skip_browser_install: