alexp97 commited on
Commit
26f1bf8
·
1 Parent(s): 7ffd03d

fix(deploy): usa 'rsconnect deploy fastapi' (no 'deploy shiny') para el gateway FastAPI

Browse files
Files changed (2) hide show
  1. docs/ejecucion.md +4 -2
  2. scripts/deploy_prod.ps1 +6 -3
docs/ejecucion.md CHANGED
@@ -187,6 +187,8 @@ uv run rsconnect add --account <cuenta> --name <cuenta> --token <TOKEN> --secret
187
  El script ejecuta el pipeline completo de extremo a extremo. **Tú solo corres un comando:**
188
 
189
  ```powershell
 
 
190
  # Primer deploy (crea la app en ShinyApps.io y te devuelve su app-id):
191
  .\scripts\deploy_prod.ps1 -Name <cuenta>
192
  # Redeploy (cuando ya tengas el app-id del primer deploy):
@@ -197,7 +199,7 @@ Internamente `deploy_prod.ps1` hace, sin intervención:
197
  1. **(0)** Compila la UI con `build.ps1` (`pnpm build` → `inline_js.py` → `backend/static`).
198
  2. **(1)** Genera `requirements.txt` (`uv export --no-dev --no-hashes --no-emit-project`) — ShinyApps instala desde ahí, no usa `uv`.
199
  3. **(2)** Traduce cada línea de `.rscignore` a flags `--exclude` (rsconnect-python no lee `.rscignore` solo).
200
- 4. **(3)** `rsconnect deploy shiny . --entrypoint backend.main:app --name <cuenta> [--app-id <id>]`.
201
 
202
  > Parámetros (`-Name`, `-AppId`) y el detalle paso a paso del script están en **§8.5**.
203
  > **BYOK / seguridad:** el `.env` **NO** viaja en el bundle (está en `.rscignore`); en producción las llaves las pone el usuario por sesión (cabeceras `X-User-*`).
@@ -362,7 +364,7 @@ Despliega el repo como una app ASGI cuyo entrypoint es el **gateway** (`backend.
362
  0. **`build.ps1`** (compila la UI a `backend/static`).
363
  1. **`uv export --no-dev --no-hashes --no-emit-project -o requirements.txt`** (ShinyApps instala desde `requirements.txt`, no usa `uv`).
364
  2. Traduce cada línea de **`.rscignore`** a flags `--exclude` (rsconnect-python no lee `.rscignore` solo).
365
- 3. **`rsconnect deploy shiny . --entrypoint backend.main:app --name <cuenta> [--app-id <id>] @exclude`**.
366
 
367
  **Parámetros:**
368
 
 
187
  El script ejecuta el pipeline completo de extremo a extremo. **Tú solo corres un comando:**
188
 
189
  ```powershell
190
+ # Compilar la UI:
191
+ .\scripts\build.ps1
192
  # Primer deploy (crea la app en ShinyApps.io y te devuelve su app-id):
193
  .\scripts\deploy_prod.ps1 -Name <cuenta>
194
  # Redeploy (cuando ya tengas el app-id del primer deploy):
 
199
  1. **(0)** Compila la UI con `build.ps1` (`pnpm build` → `inline_js.py` → `backend/static`).
200
  2. **(1)** Genera `requirements.txt` (`uv export --no-dev --no-hashes --no-emit-project`) — ShinyApps instala desde ahí, no usa `uv`.
201
  3. **(2)** Traduce cada línea de `.rscignore` a flags `--exclude` (rsconnect-python no lee `.rscignore` solo).
202
+ 4. **(3)** `rsconnect deploy fastapi . --entrypoint backend.main:app --name <cuenta> [--app-id <id>]` *(es `deploy fastapi`, no `deploy shiny`: el gateway es una app FastAPI/ASGI)*.
203
 
204
  > Parámetros (`-Name`, `-AppId`) y el detalle paso a paso del script están en **§8.5**.
205
  > **BYOK / seguridad:** el `.env` **NO** viaja en el bundle (está en `.rscignore`); en producción las llaves las pone el usuario por sesión (cabeceras `X-User-*`).
 
364
  0. **`build.ps1`** (compila la UI a `backend/static`).
365
  1. **`uv export --no-dev --no-hashes --no-emit-project -o requirements.txt`** (ShinyApps instala desde `requirements.txt`, no usa `uv`).
366
  2. Traduce cada línea de **`.rscignore`** a flags `--exclude` (rsconnect-python no lee `.rscignore` solo).
367
+ 3. **`rsconnect deploy fastapi . --entrypoint backend.main:app --name <cuenta> [--app-id <id>] @exclude`** — subcomando **`fastapi`** (no `shiny`): el entrypoint es una app FastAPI/ASGI, y `rsconnect` soporta FastAPI en shinyapps.io.
368
 
369
  **Parámetros:**
370
 
scripts/deploy_prod.ps1 CHANGED
@@ -52,11 +52,14 @@ if ($Name -eq "<TU_CUENTA_SHINYAPPS>") {
52
  exit 1
53
  }
54
 
55
- # 3) Desplegar (entrypoint = gateway FastAPI que sirve la UI Astro + /api + /shiny)
56
- Write-Host "`n[3/3] Desplegando (entrypoint backend.main:app)..." -ForegroundColor Yellow
 
 
 
57
  $appIdArgs = @()
58
  if ($AppId) { $appIdArgs = @("--app-id", $AppId) }
59
- & uv run python -c "from rsconnect.main import cli; cli()" deploy shiny . `
60
  --entrypoint backend.main:app --name $Name @appIdArgs @excludeArgs
61
 
62
  Write-Host "`n=== Despliegue completado ===" -ForegroundColor Green
 
52
  exit 1
53
  }
54
 
55
+ # 3) Desplegar como app FastAPI (ASGI). OJO: NO es 'deploy shiny' (eso espera una app
56
+ # Shiny); el gateway es FastAPI, así que el subcomando correcto es 'deploy fastapi'
57
+ # (rsconnect lo soporta para shinyapps.io). El entrypoint es el gateway que sirve
58
+ # la UI Astro en / y la API en /api.
59
+ Write-Host "`n[3/3] Desplegando (deploy fastapi, entrypoint backend.main:app)..." -ForegroundColor Yellow
60
  $appIdArgs = @()
61
  if ($AppId) { $appIdArgs = @("--app-id", $AppId) }
62
+ & uv run python -c "from rsconnect.main import cli; cli()" deploy fastapi . `
63
  --entrypoint backend.main:app --name $Name @appIdArgs @excludeArgs
64
 
65
  Write-Host "`n=== Despliegue completado ===" -ForegroundColor Green