Skip to content

Commit afb88d9

Browse files
davidfowlCopilotIEvangelist
authored
Reshuffle deployment docs: new pages, sidebar restructure, messaging updates (#644)
* Reshuffle deployment docs structure - Move pipelines doc from get-started to deployment section - Move manifest-format under deployment/azure with deprecation notice - Create new Deploy to Docker Compose page - Create new Deploy to Kubernetes page - Create new Azure Developer CLI (azd) page (legacy/alternative path) - Create new Customize Azure Container Apps page - Remove stale preview labels (aspire deploy and Docker are GA) - Update Docker package version from preview to 13.1.0 - Remove manifest references from general-purpose docs - Position aspire deploy as primary Azure deployment path - Trim integration pages (Docker, K8s) to link to deployment pages - Update sidebar, redirects, and cross-references - Update stale aspire-8.0.json schema reference Addresses: #354, #331, #335, #358, #359 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move Japanese pipelines translation to match new slug Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix localized pipeline links to new deployment path Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix duplicate K8s sidebar entry and remove pipelines from docs.topics.ts - Remove duplicate 'Deploy to Kubernetes' sidebar entry - Remove pipelines from get-started sidebar (already in deployment sidebar) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add TypeScript AppHost tabs to all deployment pages - Add C#/TypeScript tabs to 14 AppHost code blocks across 4 pages - Add 'not yet available' notes for 3 APIs without TS support: ConfigureEnvFile, WithImagePushOptions, ConfigureCustomDomain - Fix Docker package version to 13.2.0 - Add Preview badge to Kubernetes deployment page - Remove manifest schema ref from hosting-integrations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix TypeScript API examples to match actual compiler-verified signatures - addProject needs 3 args (name, path, launchProfile) - addContainer uses single image:tag string - Callbacks must be async (publishAsDockerComposeService, etc.) - Properties use .set() pattern (service.name.set, k8s.helmChartName.set) - ImagePullPolicy uses enum import, not string literal - addContainerRegistryFromString for string args - publishAsExisting takes strings, not ParameterResource - withResourceGroup removed from TS (takes ParameterResource) - publishAsAzureContainerApp callback simplified (ContainerAppHandle) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Reorder deployment sidebar: group targets, add Advanced section - Move deploy targets (Docker, K8s, Azure) right after Pipelines - Move azd to bottom of Azure section (legacy) - Move Deploy JavaScript apps below targets - Group state caching + custom pipelines under collapsed Advanced Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix 3 critical issues found by doc-tester - K8s: Remove invalid resource.Deployment reference (use comment placeholder) - ACA: Fix PublishAsExisting to require 2 params (name + resourceGroup) - ACA: Fix WithResourceGroup — it's on AzureEnvironmentResource, not individual resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add TypeScript tab to pipelines page with 'not yet available' note Follow existing pattern: show TS tab with :::note when API isn't in TS SDK. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use tab pattern for unavailable TS APIs instead of standalone Aside Convert ConfigureEnvFile, WithImagePushOptions, and ConfigureCustomDomain to show a TypeScript tab with :::note inside, matching the established pattern used in container-files.mdx and other docs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move app lifecycle guide to deployment section - Move fundamentals/app-lifecycle.mdx to deployment/app-lifecycle.mdx - Add to deployment sidebar as 'App lifecycle (CI/CD)' - Update slug in docs.topics.ts - Add redirect from old path Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clean .NET-centric language from app lifecycle guide - Frame example as C# with note that TS AppHosts follow same pattern - Replace AppHost.cs references with generic 'AppHost' - Change '.NET process' to 'local process' - Add tip about TypeScript AppHost equivalence - Note --project flag purpose in CI/CD example Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix doc-tester final round issues - Remove app-lifecycle from docs.topics.ts (fixes wrong prev/next nav) - Fix WellKnownSteps → WellKnownPipelineSteps (8 occurrences in prose) - Add missing using/pragma to pipelines code example - Add missing 'using Aspire.Hosting.Docker' to ConfigureEnvFile example - Add missing ASPIRECOMPUTE003 pragma to AddContainerRegistry example - Add missing ASPIREACADOMAINS001 pragma to ConfigureCustomDomain example Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix K8s deploy column: no aspire deploy support for Kubernetes Kubernetes uses aspire publish + Helm/kubectl, not aspire deploy. Addresses review feedback. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback from @JamesNK - docker-compose: mention AddDockerComposeEnvironment in prose, highlight key lines - docker-compose: change example resource name to avoid 'docker-compose-down-compose' - kubernetes: rename to 'Publish to Kubernetes', clarify no aspire deploy support - kubernetes: mention AddKubernetesEnvironment in prose, highlight key lines - kubernetes: replace plaintext tree with FileTree component - kubernetes: update sidebar label to match - redirects: add missing Japanese locale redirect for pipelines - deploy-first-app: fix lowercase 'when' at sentence start - customize-container-apps: add TS tab to Resource groups section - docker-compose: margin-bottom issue is a site-wide CSS concern (noted for @IEvangelist) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address round 2 PR feedback from @JamesNK - kubernetes: make TS samples match C# scope (snippet-only, not full builder) - kubernetes: remove ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL caution (dashboard-only) - azd: make TS sample match C# scope - customize-aca: make all TS samples match C# scope (5 blocks fixed) - customize-aca: link 'Azure Container Apps' to ACA about page - customize-aca: add TS tab to Resource groups with :::note pattern Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert Kubernetes rename — keep 'Deploy to Kubernetes' in deployment section Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix C#/TypeScript sample parity across deployment pages - docker-compose: remove builder boilerplate from registry TS sample - customize-aca: clarify ContainerAppHandle scaling in TS comment - customize-aca: clean up publishAsExisting TS sample (strings, not params) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use 'env' as Docker Compose resource name in examples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix 'front end' -> 'frontend' consistency in deploy-first-app Addresses review feedback: standardize on 'frontend' (one word) throughout prose and mermaid diagram labels. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix remaining C#/TS sample mismatches - docker-compose: use addParameterFromConfiguration to match C# config binding - customize-aca: use publishAsExistingFromParameters with parameters to match C# - ACA scaling: genuine API gap (ContainerAppHandle), comment is accurate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clean up content, fix issues with C# APIs being incorrect, link to aspire.dev API ref - instead of MS Learn, fix #645 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: David Pine <david.pine@microsoft.com>
1 parent dbc5b32 commit afb88d9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2636
-365
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,4 +450,5 @@ FodyWeavers.xsd
450450

451451

452452
bin/
453-
obj/
453+
obj/
454+
tmp-ts-validation/

src/frontend/config/redirects.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,8 @@ export const redirects = {
7272
'/reference/cli/commands/aspire-mcp-start/': '/reference/cli/commands/aspire-agent-mcp/',
7373
'/reference/cli/commands/aspire-exec/': '/reference/cli/commands/aspire-resource/',
7474
'/get-started/configure-mcp/': '/get-started/ai-coding-agents/',
75+
'/get-started/pipelines/': '/deployment/pipelines/',
76+
'/ja/get-started/pipelines/': '/ja/deployment/pipelines/',
77+
'/deployment/manifest-format/': '/deployment/azure/manifest-format/',
78+
'/fundamentals/app-lifecycle/': '/deployment/app-lifecycle/',
7579
};

src/frontend/config/sidebar/deployment.topics.ts

Lines changed: 46 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -64,71 +64,16 @@ export const deploymentTopics: StarlightSidebarTopicsUserConfig = {
6464
slug: 'deployment/overview',
6565
},
6666
{
67-
label: 'Deploy JavaScript apps',
68-
slug: 'deployment/javascript-apps',
67+
label: 'Pipelines (aspire do)',
68+
slug: 'deployment/pipelines',
6969
},
7070
{
71-
label: 'Deployment manifest format',
72-
translations: {
73-
da: 'Udrulningsmanifestformat',
74-
de: 'Bereitstellungsmanifestformat',
75-
en: 'Deployment manifest format',
76-
es: 'Formato de manifiesto de despliegue',
77-
fr: 'Format de manifeste de déploiement',
78-
hi: 'तैनाती मैनिफ़ेस्ट प्रारूप',
79-
id: 'Format manifes penyebaran',
80-
it: 'Formato del manifesto di distribuzione',
81-
ja: 'デプロイマニフェスト形式',
82-
ko: '배포 매니페스트 형식',
83-
'pt-BR': 'Formato de manifesto de implantação',
84-
ru: 'Формат манифеста развертывания',
85-
tr: 'Dağıtım bildirimi biçimi',
86-
uk: 'Формат маніфесту розгортання',
87-
'zh-CN': '部署清单格式',
88-
},
89-
slug: 'deployment/manifest-format',
90-
},
91-
{
92-
label: 'Deployment state caching',
93-
translations: {
94-
da: 'Cachelagring af udrulningstilstand',
95-
de: 'Zwischenspeichern des Bereitstellungsstatus',
96-
en: 'Deployment state caching',
97-
es: 'Almacenamiento en caché del estado de despliegue',
98-
fr: "Mise en cache de l'état de déploiement",
99-
hi: 'तैनाती स्थिति कैशिंग',
100-
id: 'Caching status penyebaran',
101-
it: 'Memorizzazione nella cache dello stato di distribuzione',
102-
ja: 'デプロイ状態のキャッシュ',
103-
ko: '배포 상태 캐싱',
104-
'pt-BR': 'Cache de estado de implantação',
105-
ru: 'Кэширование состояния развертывания',
106-
tr: 'Dağıtım durumu önbelleğe alma',
107-
uk: 'Кешування стану розгортання',
108-
'zh-CN': '部署状态缓存',
109-
},
110-
slug: 'deployment/deployment-state-caching',
71+
label: 'Deploy to Docker Compose',
72+
slug: 'deployment/docker-compose',
11173
},
11274
{
113-
label: 'Custom deployment pipelines',
114-
translations: {
115-
da: 'Brugerdefinerede implementeringspipelines',
116-
de: 'Benutzerdefinierte Bereitstellungspipelines',
117-
en: 'Custom deployment pipelines',
118-
es: 'Canalizaciones de despliegue personalizadas',
119-
fr: 'Pipelines de déploiement personnalisés',
120-
hi: 'कस्टम तैनाती पाइपलाइन',
121-
id: 'Pipeline penyebaran kustom',
122-
it: 'Pipeline di distribuzione personalizzate',
123-
ja: 'カスタム デプロイ パイプライン',
124-
ko: '사용자 지정 배포 파이프라인',
125-
'pt-BR': 'Pipelines de implantação personalizados',
126-
ru: 'Пользовательские конвейеры развертывания',
127-
tr: 'Özel dağıtım işlem hatları',
128-
uk: 'Користувацькі конвеєри розгортання',
129-
'zh-CN': '自定义部署管道',
130-
},
131-
slug: 'deployment/custom-deployments',
75+
label: 'Deploy to Kubernetes',
76+
slug: 'deployment/kubernetes',
13277
},
13378
{
13479
label: 'Deploy to Azure',
@@ -172,6 +117,10 @@ export const deploymentTopics: StarlightSidebarTopicsUserConfig = {
172117
},
173118
slug: 'deployment/azure/aca-deployment-aspire-cli',
174119
},
120+
{
121+
label: 'Customize Azure Container Apps',
122+
slug: 'deployment/azure/customize-container-apps',
123+
},
175124
{
176125
label: 'Azure security best practices',
177126
translations: {
@@ -193,6 +142,42 @@ export const deploymentTopics: StarlightSidebarTopicsUserConfig = {
193142
},
194143
slug: 'deployment/azure/azure-security-best-practices',
195144
},
145+
{
146+
label: 'Azure Developer CLI (azd)',
147+
collapsed: true,
148+
items: [
149+
{
150+
label: 'Overview',
151+
slug: 'deployment/azure/azure-developer-cli',
152+
},
153+
{
154+
label: 'Deployment manifest format',
155+
slug: 'deployment/azure/manifest-format',
156+
},
157+
],
158+
},
159+
],
160+
},
161+
{
162+
label: 'Deploy JavaScript apps',
163+
slug: 'deployment/javascript-apps',
164+
},
165+
{
166+
label: 'App lifecycle (CI/CD)',
167+
slug: 'deployment/app-lifecycle',
168+
},
169+
{
170+
label: 'Advanced',
171+
collapsed: true,
172+
items: [
173+
{
174+
label: 'Deployment state caching',
175+
slug: 'deployment/deployment-state-caching',
176+
},
177+
{
178+
label: 'Custom deployment pipelines',
179+
slug: 'deployment/custom-deployments',
180+
},
196181
],
197182
},
198183
],

src/frontend/config/sidebar/docs.topics.ts

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -529,27 +529,6 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = {
529529
},
530530
slug: 'get-started/app-host',
531531
},
532-
{
533-
label: 'Pipelines and app topology',
534-
translations: {
535-
da: 'Udrulning og apptopologi',
536-
de: 'Bereitstellung und App-Topologie',
537-
en: 'Pipelines and app topology',
538-
es: 'Despliegue y topología de la aplicación',
539-
fr: 'Déploiement et topologie de l’application',
540-
hi: 'परिनियोजन और ऐप टोपोलॉजी',
541-
id: 'Penyebaran dan topologi aplikasi',
542-
it: 'Distribuzione e topologia dell’applicazione',
543-
ja: 'パイプラインとアプリのトポロジー',
544-
ko: '배포 및 앱 토폴로지',
545-
'pt-BR': 'Implantação e topologia do aplicativo',
546-
ru: 'Развертывание и топология приложения',
547-
tr: 'Dağıtım ve uygulama topolojisi',
548-
uk: 'Розгортання і топологія застосунку',
549-
'zh-CN': '部署与应用拓扑',
550-
},
551-
slug: 'get-started/pipelines',
552-
},
553532
{
554533
label: 'Understanding resources',
555534
translations: {
@@ -571,27 +550,6 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = {
571550
},
572551
slug: 'get-started/resources',
573552
},
574-
{
575-
label: 'Aspire app lifecycle guide',
576-
slug: 'fundamentals/app-lifecycle',
577-
translations: {
578-
da: 'Guide til Aspire app-livscyklus',
579-
de: 'Leitfaden zum Aspire-App-Lebenszyklus',
580-
en: 'Aspire app lifecycle guide',
581-
es: 'Guía del ciclo de vida de la aplicación Aspire',
582-
fr: 'Guide du cycle de vie des applications Aspire',
583-
hi: 'Aspire ऐप जीवनचक्र गाइड',
584-
id: 'Panduan siklus hidup aplikasi Aspire',
585-
it: 'Guida al ciclo di vita delle app Aspire',
586-
ja: 'Aspire アプリのライフサイクル ガイド',
587-
ko: 'Aspire 앱 수명 주기 가이드',
588-
'pt-BR': 'Guia do ciclo de vida do aplicativo Aspire',
589-
ru: 'Руководство по жизненному циклу приложения Aspire',
590-
tr: 'Aspire uygulama yaşam döngüsü kılavuzu',
591-
uk: 'Посібник з життєвого циклу застосунку Aspire',
592-
'zh-CN': 'Aspire 应用生命周期指南',
593-
},
594-
},
595553
{
596554
label: 'Glossary',
597555
slug: 'get-started/glossary',
@@ -1340,4 +1298,4 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = {
13401298
],
13411299
},
13421300
],
1343-
};
1301+
};

src/frontend/src/content/docs/app-host/container-registry.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,4 +629,4 @@ The explicit container registry configuration introduced in Aspire 13.1 provides
629629
- [Configure Azure Container Apps environments](/integrations/cloud/azure/configure-container-apps/)
630630
- [`aspire do` command](/reference/cli/commands/aspire-do/)
631631
- [External parameters](/fundamentals/external-parameters/)
632-
- [Pipelines and app topology](/get-started/pipelines/)
632+
- [Pipelines and app topology](/deployment/pipelines/)

src/frontend/src/content/docs/da/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ import LanguagesSupported from '@components/LanguagesSupported.astro';
9797

9898
## Lokal-først, produktionsklar
9999

100-
**Bygget til lokal udvikling**, Aspire spejler produktionsmiljøer på din maskine, eliminerer "virker på min maskine" problemer for glatte deployments. [Lær om deployment og app-topologi](/da/get-started/pipelines/).
100+
**Bygget til lokal udvikling**, Aspire spejler produktionsmiljøer på din maskine, eliminerer "virker på min maskine" problemer for glatte deployments. [Lær om deployment og app-topologi](/da/deployment/pipelines/).
101101

102102
import LocalVsProdEnvironments from '@components/LocalVsProdEnvironments.astro';
103103

src/frontend/src/content/docs/de/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Aspire unterstützt viele Sprachen & Frameworks und lässt dich mit deinen Favor
9999

100100
## Lokal zuerst, produktionsbereit
101101

102-
**Für lokale Entwicklung gebaut**, Aspire spiegelt Produktionsumgebungen auf deiner Maschine und eliminiert „Works on my machine“-Probleme für reibungslose Deployments. [Mehr über Deployment & App-Topologie](/de/get-started/pipelines/).
102+
**Für lokale Entwicklung gebaut**, Aspire spiegelt Produktionsumgebungen auf deiner Maschine und eliminiert „Works on my machine“-Probleme für reibungslose Deployments. [Mehr über Deployment & App-Topologie](/de/deployment/pipelines/).
103103

104104
import LocalVsProdEnvironments from '@components/LocalVsProdEnvironments.astro';
105105

src/frontend/src/content/docs/fundamentals/app-lifecycle.mdx renamed to src/frontend/src/content/docs/deployment/app-lifecycle.mdx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ description: Understand the lifecycle of Aspire applications from development to
66
import { Aside, FileTree, Steps } from '@astrojs/starlight/components';
77
import LearnMore from '@components/LearnMore.astro';
88

9-
This guide provides a high-level overview of the lifecycle phases of an Aspire application, from development through local deployment to production release. By using the same `AppHost` configuration across all phases, you ensure consistency and reduce configuration drift between environments.
9+
This guide provides a high-level overview of the lifecycle phases of an Aspire application, from development through local deployment to production release. By using the same AppHost configuration across all phases, you ensure consistency and reduce configuration drift between environments.
1010
The example in this guide demonstrates how Aspire orchestrates containerized applications with persistent storage and CI/CD automation using the [Docker Integration](/integrations/compute/docker/) and GitHub.
1111

1212
## App lifecycle
@@ -25,6 +25,8 @@ The Aspire application lifecycle consists of three main phases:
2525

2626
### Example
2727

28+
The following example uses a C# AppHost, but the same lifecycle applies to TypeScript AppHosts.
29+
2830
Consider [this example](https://github.com/BethMassi/VolumeMount/). You have a distributed application that consists of a Blazor web project that relies on a SQL Server database with a persistent data volume as well as a persistent writable file volume to capture user file uploads.
2931
You want to distribute your Blazor app as a Docker container image via the GitHub Container Registry. You need the [Aspire.Hosting.Docker](/integrations/compute/docker/) and [Aspire.Hosting.SqlServer](/integrations/databases/sql-server/sql-server-get-started/) integrations.
3032

@@ -104,7 +106,7 @@ When you run `aspire run`:
104106
<Steps>
105107

106108
1. **Aspire dashboard launches** - A web-based dashboard starts, and its URL (often an HTTPS login URL like `https://localhost:<port>/login?...`) is printed to the console.
107-
2. **Resources start** - All resources defined in your `AppHost.cs` are orchestrated.
109+
2. **Resources start** - All resources defined in your AppHost are orchestrated.
108110
3. **Live debugging** - You can attach debuggers, set breakpoints, and modify code with hot reload.
109111
4. **Telemetry & logs** - Dashboard provides real-time logs, metrics, and distributed traces.
110112

@@ -132,7 +134,7 @@ Dashboard: https://localhost:17244/login?t=9db79f2885dae24ee06c6ef10290b8b2
132134

133135
In the example above, when resources start with the run command:
134136
- SQL Server container starts in Docker with persistent volume
135-
- Blazor Web project runs as a .NET process (**not containerized**)
137+
- Web project runs as a local process (**not containerized**)
136138
- Database is automatically created and migrated (containerized)
137139

138140
## Phase 2: Local Deployment
@@ -193,7 +195,7 @@ In [this example](https://github.com/BethMassi/VolumeMount/blob/main/.github/wor
193195

194196
<Steps>
195197

196-
1. **Setup Environment** - Install .NET
198+
1. **Setup Environment** - Install required SDKs
197199
2. **Install Aspire CLI** - Install the Aspire CLI
198200
3. **Build and Push Container Images** - Build app and push image to GitHub Container Registry with `aspire do push`
199201
4. **Publish Docker Compose Artifacts** - Generate deployment files with `aspire publish`
@@ -204,6 +206,7 @@ In [this example](https://github.com/BethMassi/VolumeMount/blob/main/.github/wor
204206
#### Step 1: Setup Environment
205207

206208
```yaml
209+
# Required for C# AppHost projects
207210
- name: Setup .NET
208211
uses: actions/setup-dotnet@v4
209212
with:
@@ -241,7 +244,7 @@ Replace `your-org/your-repo` with your actual GitHub organization and repository
241244
</Aside>
242245

243246
The `aspire do push` command does the following:
244-
- Analyzes your `AppHost.cs` configuration
247+
- Analyzes your AppHost configuration
245248
- Restores dependencies and builds the project
246249
- Builds Docker container images for project resources
247250
- Tags images with configured registry endpoint and repository
@@ -264,8 +267,12 @@ The `aspire do push` command does the following:
264267
--output-path ./aspire-output
265268
```
266269

270+
<Aside type="note">
271+
The `--project` flag is needed when your AppHost isn't in the current directory.
272+
</Aside>
273+
267274
The `aspire publish` command does the following:
268-
- Analyzes your `AppHost.cs` configuration
275+
- Analyzes your AppHost configuration
269276
- Generates `docker-compose.yaml` file with all service definitions
270277
- Creates `.env` template file for environment variables
271278
- Packages configuration needed for deployment
@@ -329,11 +336,15 @@ After the workflow completes, you have everything needed for production deployme
329336

330337
| Phase | Command | Purpose | Environment | App | Database |
331338
|-------|---------|---------|-------------|------------|------------|
332-
| **Development** | `aspire run` | Inner-loop coding & debugging | Local machine | App process (i.e. .NET) | Container |
339+
| **Development** | `aspire run` | Inner-loop coding & debugging | Local machine | Local process | Container |
333340
| **Local Deploy** | `aspire deploy` | Test containerized app locally | Registered compute environment (i.e. Docker Desktop) | Container | Container |
334341
| **Release** | CI/CD workflow (i.e. GitHub Actions) | Publish to staging/ production | Cloud/Server | Container | Container |
335342

336-
The `AppHost.cs` file is the **single source of truth** for your application architecture. Each phase above uses the exact same `AppHost` configuration. This eliminates configuration drift between development and deployment. It defines things your distributed application needs like:
343+
<Aside type="tip">
344+
This example uses a C# AppHost, but the same lifecycle workflow applies to TypeScript AppHosts. Replace `.csproj` references with your `apphost.ts` path as needed.
345+
</Aside>
346+
347+
The AppHost is the **single source of truth** for your application architecture. Each phase above uses the exact same AppHost configuration. This eliminates configuration drift between development and deployment. It defines things your distributed application needs like:
337348
- **Services & Dependencies** - Projects, containers, and their relationships
338349
- **Configuration** - Connection strings, secrets, and parameters
339350
- **Volumes** - Persistent storage for databases and files

0 commit comments

Comments
 (0)