Auto-activate for advanced_alchemy, alembic/, SQLAlchemyAsyncRepositoryService, SQLAlchemyAsyncConfig, repository_type, service_class, filters, or storage. Not for raw SQLAlchemy — use sqlspec.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for Dockerfile, compose, Railway, Cloud Run, GKE, systemd, Kubernetes, Terraform, deploy scripts, or granian/litestar run at runtime. Not for packaging artifacts.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Production deployment patterns for Litestar ASGI applications across Docker, Railway, Kubernetes/GKE, Cloud Run, and systemd. Covers multi-stage Dockerfiles, distroless images, asset pipelines, worker containers, and health-check integration.
All deployment paths use Granian (via litestar-granian) as the ASGI server, uv for Python package management, and Bun for frontend asset builds.
Build vs. deploy split: this skill is about running Litestar artifacts in production. For producing those artifacts — wheel bundling with embedded Vite assets, PyApp onefile binaries, GitHub Actions CI/release pipelines — see litestar-build.
from __future__ import annotations is allowed in consumer-app modules (Dockerfiles, deploy scripts, settings).T | None).litestar run (which delegates to Granian when litestar-granian is installed).@dataclass settings — never hardcode secrets or connection strings.| Target | Reference | Key File |
|---|---|---|
| Litestar App & Cloud IAP | references/litestar-app.md | asgi.py, IAP middleware |
| Docker (standard multi-stage) | references/docker-standard.md | Dockerfile |
| Docker (distroless production) | references/docker-distroless.md | Dockerfile.distroless |
Background worker container (litestar-saq / litestar-queues) | references/docker-workers.md | Dockerfile.worker |
| Docker Compose (app + infra) | references/docker-compose.md | docker-compose.yml |
| Railway | references/railway.md | railway.app.json |
| Kubernetes / GKE | references/kubernetes.md | deploy.py, templates/ |
| Cloud Run (Services & Jobs) | references/cloud-run.md | service.yaml |
| systemd native | references/systemd.md | litestar.service |
# Web server (Granian via litestar-granian)
ENTRYPOINT ["tini", "--"]
CMD ["litestar", "run", "--host", "0.0.0.0", "--port", "8000"]
# Background worker — Option A: litestar-saq (separate container)
ENTRYPOINT ["tini", "--"]
CMD ["litestar", "workers", "run"]
# Background worker — Option B: litestar-queues (separate container)
ENTRYPOINT ["tini", "--"]
CMD ["litestar", "queues", "run", "--max-concurrency", "10", "--drain-timeout", "30.0"]
LITESTAR_APP="app.server.asgi:create_app" # app discovery
DATABASE_URL="postgresql+asyncpg://..." # async driver
SAQ_REDIS_URL="redis://cache:6379/0" # worker queue (when using litestar-saq)
LITESTAR_TRUSTED_PROXIES="*" # proxy header trust behind Cloud Run / Railway / ingress
SECRET_KEY="..." # session signing
<workflow>
Docker Compose for local/staging. Railway for rapid PaaS. GKE/K8s for production at scale. Cloud Run for serverless containers (and Cloud Run Jobs for litestar-queues one-shot tasks). systemd for bare-metal.
Start from Dockerfile.distroless for production (preferred). Use standard multi-stage for environments that need a shell. Use Dockerfile.dev for local Docker development. Always pin ARG PYTHON_VERSION=3.13.
Copy Bun lockfiles first (layer caching), install JS deps, then bun run build and uv run app assets build. Assets must be in the wheel before uv build --wheel --clear.
Background workers use the same build stages as the web image but a different CMD, no exposed HTTP port, and a longer termination grace period (120s):
litestar-saq: run litestar workers run (or app workers run) with SAQ_USE_SERVER_LIFESPAN=false.litestar-queues: run litestar queues run --max-concurrency 10 --drain-timeout 30.0 for persistent task queues (SQLSpec, Advanced Alchemy, Redis/Valkey), litestar queues run-consumer --backend <kafka|pubsub|rabbitmq|sqs> for stream consumers, or litestar queues run-task inside serverless Cloud Run Jobs.Build images in CI, push to registry, deploy via railway up, gcloud run deploy, or kubectl apply. Tag images with git SHA for production — never deploy latest to prod.
Expose /health on the API container. K8s uses startupProbe + livenessProbe + readinessProbe on /health:8000. Cloud Run and Railway use the same endpoint for readiness.
gcr.io/distroless/cc-debian12:nonroot) has no shell, no apt, minimal CVE surface. Use slim only when you need a shell for debugging.nonroot user. Create with useradd --system --uid 65532 in standard images.uv sync --frozen --no-dev in builder, uv pip install wheel in runner.ENTRYPOINT ["tini", "--"].STOPSIGNAL SIGINT). litestar-granian v0.16+ runs Granian in a supervised process group that forwards SIGINT, SIGTERM, and SIGHUP and enforces --workers-kill-timeout (default 5s, plus a 5s parent deadline; pass --workers-kill-timeout 30 in production). Keeping STOPSIGNAL SIGINT ensures clean shutdown across both standalone Granian and litestar run.docker buildx with --platform linux/amd64,linux/arm64. Distroless Dockerfile handles arch-specific lib paths via TARGETARCH.node_modules into production images./health. K8s probes hit this path. Cloud Run and Railway use it for readiness.USER nonroot in Dockerfile. runAsNonRoot: true in K8s pod security context.ARG PYTHON_VERSION=3.13 at the top. Never use python:latest.litestar-saq (litestar workers run) and litestar-queues (litestar queues run / run-consumer) poll queues or brokers, not HTTP. They need a dedicated CMD, separate scaling, and no exposed port.DATABASE_POOL_DISABLED=true, SAQ_USE_SERVER_LIFESPAN=false, SAQ_WEB_ENABLED=false during build to prevent the app from trying to connect to databases during asset compilation.Before shipping a Litestar deployment, verify:
ARG PYTHON_VERSION is pinned (not latest)COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ presentUV_COMPILE_BYTECODE=1 and UV_LINK_MODE=copy set in builderuv build creates wheel; runner installs wheel (not editable)ENTRYPOINT ["tini", "--"] setSTOPSIGNAL SIGINT set (for Granian graceful shutdown)LITESTAR_APP env var set/health endpoint exists and is used by probes/readiness checkslitestar-saq or litestar-queues) is a separate container/job with dedicated CMD and no EXPOSEdepends_on uses condition: service_healthySee references/docker-distroless.md for a complete 4-stage distroless Dockerfile with multi-arch support, Vite asset build, and non-root execution.
For a full local stack (app + worker + migrator + PostgreSQL + Valkey), see references/docker-compose.md.
For Kubernetes production deployment with HPA, Ingress, and GKE Workload Identity, see references/kubernetes.md.
</example>litestar-saq & litestar-queues) — background task and consumer containerslitestar run@dataclass settings patternまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Auto-activate for advanced_alchemy, alembic/, SQLAlchemyAsyncRepositoryService, SQLAlchemyAsyncConfig, repository_type, service_class, filters, or storage. Not for raw SQLAlchemy — use sqlspec.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for Litestar, Controller, Router, @get/@post, FromPath, MsgspecDTO, OpenAPIConfig, Provide, FromDishka, Guard, ASGIMiddleware, HTTPException, ChannelsPlugin, or WebSocket. Not for standalone libs.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for Google ADK, LlmAgent, Runner, SQLSpecSessionService, google-genai, AgentRuntime, SpecTree, DynamicWorkflow, FunctionTool, or SSE agent chats. Not for offline ML training.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for litestar_autowire, AutowirePlugin, AutowireConfig, domain_packages, AutowireIntegration, AutowireLoader, or clear_autowire_cache. Not for manual Router composition — use explicit routes.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for uv build, hatch build, PyApp, PYAPP_*, wheel assets, GitHub release matrices, cargo-zigbuild, or python-build-standalone. Not for runtime deployment.
日本語の概要は準備中です。原文の説明を表示しています。
Auto-activate for litestar_email, EmailPlugin, EmailConfig, EmailService, EmailMessage, SMTPConfig, ResendConfig, SendGridConfig, MailgunConfig, SESConfig. Not for marketing APIs — use vendor SDKs.
日本語の概要は準備中です。原文の説明を表示しています。