コンテンツにスキップ
Docs Try Aspire
Docs Try

最初の Aspire アプリをデプロイする

プログラミング言語を選択してください

このチュートリアルでは、最初の Aspire アプリを構築する — C# AppHost クイックスタートで作成したアプリを取得し、デプロイします。これは、いくつかの重要な手順に分けることができます。

  1. デプロイメントパッケージを追加する - ターゲットのホスティング パッケージを追加します。
  2. AppHost を更新する - 環境 API を構成します。
  3. アプリをデプロイする - Aspire CLI を使用してデプロイします。
  4. デプロイメントを確認する - アプリが期待どおりに実行されていることを確認します。
  5. リソースをクリーンアップする - コストの発生を避けるために、デプロイされたリソースを削除します。

次の図は、デプロイしているサンプル アプリのアーキテクチャを示しています。

architecture-beta
    group api-docker(logos:docker-icon)[API container]
    group f-docker(logos:docker-icon)[Front end container]

    service api(logos:dotnet)[API service] in api-docker
    service http(iconoir:server-connection)[https]
    service frontend(aspire:blazor)[Blazor frontend] in f-docker

    frontend:L --> R:http
    http:L --> R:api

ASP.NET Core Blazor および Minimal API スターター テンプレートは 2 つのリソースで構成され、それぞれが別のコンテナーとしてデプロイされます。

このチュートリアルでは、最初の Aspire アプリを構築する — TypeScript AppHost クイックスタートで作成したアプリを取得してデプロイします。これは、いくつかの重要な手順に分けることができます。

  1. デプロイメントパッケージを追加する - ターゲットのホスティング パッケージを追加します。
  2. AppHost を更新する - 環境 API を構成します。
  3. アプリをデプロイする - Aspire CLI を使用してデプロイします。
  4. デプロイメントを確認する - アプリが期待どおりに実行されていることを確認します。
  5. リソースをクリーンアップする - コストの発生を避けるために、デプロイされたリソースを削除します。

次の図は、デプロイしているサンプル アプリのアーキテクチャを示しています。

architecture-beta
  group docker(logos:docker-icon)[NodeJS and static site server container]

  service api(logos:nodejs-icon)[API service] in docker
  service http(iconoir:server-connection)[https] in docker
  service frontend(logos:react)[React frontend] in docker

  frontend:L --> R:http
  http:L --> R:api

React (Vite) および Express スターター テンプレートは、単一のコンテナーとしてデプロイされる 2 つのリソースで構成されます。 Express サーバーは、API と React によって生成された静的フロントエンド ファイルの両方をホストします。

このチュートリアルでは、バックエンドがフロントエンドにサービスを提供する デプロイメント モデルを使用します。リバース プロキシやゲートウェイ/BFF アプローチなど、AddViteAppAddJavaScriptApp で利用できる他の運用パターンについては、JavaScript アプリをデプロイする を参照してください。

Aspire アプリを展開する場所に応じて、次の前提条件がインストールおよび構成されていることを確認してください。

Docker ロゴ

Aspire アプリを展開する場所に応じて、次の前提条件がインストールおよび構成されていることを確認してください。

Docker ロゴ

デプロイメントパッケージを追加

Section titled “デプロイメントパッケージを追加”

前のクイックスタートで作成した Aspire ソリューションのルート ディレクトリで、ターミナルで次のコマンドを実行して、適切なホスティング展開パッケージを追加します。

Docker Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。 YAML ファイルを使用してアプリケーションのサービス、ネットワーク、ボリュームを構成できるため、複雑なアプリケーションをローカルまたはさまざまな環境で管理およびデプロイすることが容易になります。

Aspire CLI — Add Docker Compose
aspire add docker

Aspire CLI は対話型です。追加する 📦 Aspire.Hosting.Docker バージョンに適切な検索結果を必ず選択してください。

追加の選択を求められた場合は、 Up Arrow Up Arrow Up Arrow キーと Down Arrow Down Arrow Down Arrow キーを使用してオプションを移動します。 Return Enter Enter を押して選択を確認します。

aspire add コマンドの詳細については、参考資料 をご覧ください。

前のクイックスタートで作成した Aspire アプリのルート ディレクトリで、ターミナルで次のコマンドを実行して、適切なホスティング展開パッケージを追加します。

Docker Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。 YAML ファイルを使用してアプリケーションのサービス、ネットワーク、ボリュームを構成できるため、複雑なアプリケーションをローカルまたはさまざまな環境で管理およびデプロイすることが容易になります。

Aspire CLI — Add Docker Compose
aspire add docker

Aspire CLI は対話型です。追加する 📦 Aspire.Hosting.Docker バージョンに適切な検索結果を必ず選択してください。

追加の選択を求められた場合は、 Up Arrow Up Arrow Up Arrow キーと Down Arrow Down Arrow Down Arrow キーを使用してオプションを移動します。 Return Enter Enter を押して選択を確認します。

aspire add コマンドの詳細については、参考資料 をご覧ください。

AppHost で、適切な環境 API メソッドへの呼び出しを連鎖させて、ターゲットのデプロイメント環境を構成します。

C# — AppHost.cs project-based orchestrator
var builder = DistributedApplication.CreateBuilder(args);
// 次の行を追加して、Docker Compose 環境を構成します。
builder.AddDockerComposeEnvironment("env");
var apiService = builder.AddProject<Projects.AspireApp_ApiService>("apiservice")
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.AspireApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health")
.WithReference(apiService)
.WaitFor(apiService);
builder.Build().Run();
  • AddDockerComposeEnvironment - デプロイ用に Docker Compose 環境を構成します。この呼び出しにより、デプロイの一部として AppHost 内のリソースをコンテナー化するサポートが暗黙的に追加されます。
  • WithExternalHttpEndpoints - デプロイ時にリソースの HTTP エンドポイントを公開します。

AppHost で、適切な環境 API メソッドへの呼び出しを連鎖させて、ターゲットのデプロイメント環境を構成します。

TypeScript — apphost.mts
import {
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
} from './.aspire/modules/aspire.mjs';
const
const builder: IDistributedApplicationBuilder
builder
= await
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
();
// 次の行を追加して、Docker Compose 環境を構成します。
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addDockerComposeEnvironment(name: string): DockerComposeEnvironmentResource

Adds a Docker Compose environment to the application model.

addDockerComposeEnvironment
("env");
const
const app: NodeAppResource
app
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addNodeApp(name: string, appDirectory: string, scriptPath: string): NodeAppResource

Adds a node application to the application model. Node should be available on the PATH.

addNodeApp
("app", "./api", "src/index.ts")
.
ExecutableResource.withHttpEndpoint(options?: {
port?: number;
targetPort?: number;
name?: string;
env?: string;
isProxied?: boolean;
} | undefined): NodeAppResource (+1 overload)

Adds an HTTP endpoint

withHttpEndpoint
({
env?: string | undefined
env
: "PORT" })
.
ExecutableResource.withExternalHttpEndpoints(): NodeAppResource

Marks existing http or https endpoints on a resource as external.

withExternalHttpEndpoints
();
const
const frontend: ViteAppResource
frontend
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addViteApp(name: string, appDirectory: string, options?: {
runScriptName?: string;
}): ViteAppResource (+1 overload)

Adds a Vite app to the distributed application builder.

addViteApp
("frontend", "./frontend")
.
ExecutableResource.withReference(source: EndpointReference | string | uri, options?: {
connectionName?: string;
optional?: boolean;
name?: string;
} | undefined): ViteAppResource (+1 overload)

Adds a reference to another resource

withReference
(
const app: NodeAppResource
app
)
.
ExecutableResource.waitFor(dependency: IResource | IResourceWithConnectionString, waitBehavior?: WaitBehavior): ViteAppResource

Waits for another resource to be ready

waitFor
(
const app: NodeAppResource
app
);
await
const app: NodeAppResource
app
.
IContainerFilesDestinationResource.publishWithContainerFiles(source: IResourceWithContainerFiles, destinationPath: string): NodeAppResource

Configures the resource to copy container files from the specified source resource during publishing.

publishWithContainerFiles
(
const frontend: ViteAppResource
frontend
, "./static");
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

build
().
DistributedApplication.run(cancellationToken?: cancellationToken): void

Runs the distributed application

run
();
  • addDockerComposeEnvironment - デプロイ用に Docker Compose 環境を構成します。この呼び出しにより、デプロイの一部として AppHost 内のリソースをコンテナー化するサポートが暗黙的に追加されます。
  • withExternalHttpEndpoints - デプロイ時にリソースの HTTP エンドポイントを公開します。

デプロイメント パッケージを追加し、AppHost を更新したので、Aspire アプリをデプロイできます。

Docker Compose にデプロイすると、コンテナー イメージが構築され、Docker Compose を使用してサービスがローカルで開始されます。

Aspire CLI — Deploy your app
aspire deploy

次の出力例を考えてみましょう。

ASP.NET Core/Blazor アプリを Docker Compose にデプロイするための出力例
Aspire CLI - Deploy ASP.NET Core/Blazor app with Docker Compose
14:28:15 (pipeline execution) → Starting pipeline execution...
14:28:15 (build-prereq) → Starting build-prereq...
14:28:15 (publish-env) → Starting publish-env...
14:28:15 (deploy-prereq) → Starting deploy-prereq...
14:28:15 (build-prereq) ✓ build-prereq completed successfully
14:28:15 (deploy-prereq) i [INF] Initializing deployment for environment 'Production'
14:28:15 (publish-env) i [INF] Generating Compose output
14:28:15 (deploy-prereq) i [INF] Setting default deploy tag 'aspire-deploy-20251107202815' for compute resource(s).
14:28:15 (deploy-prereq) ✓ deploy-prereq completed successfully
14:28:15 (build-webfrontend) → Starting build-webfrontend...
14:28:15 (build-apiservice) → Starting build-apiservice...
14:28:15 (publish-env) → Writing the Docker Compose file to the output path.
14:28:15 (build-webfrontend) i [INF] Building container image for resource webfrontend
14:28:15 (build-apiservice) i [INF] Building container image for resource apiservice
14:28:15 (build-webfrontend) i [INF] Building image: webfrontend
14:28:15 (publish-env) ✓ Docker Compose file written successfully to .\AspireApp\AspireApp.AppHost\aspire-output\docker-compose.yaml. (0.0s)
14:28:15 (publish-env) ✓ publish-env completed successfully
14:28:15 (publish) → Starting publish...
14:28:15 (publish) ✓ publish completed successfully
14:28:28 (build-webfrontend) i [INF] Building image for webfrontend completed
14:28:28 (build-apiservice) i [INF] Building image: apiservice
14:28:28 (build-webfrontend) ✓ build-webfrontend completed successfully
14:28:32 (build-apiservice) i [INF] Building image for apiservice completed
14:28:32 (build-apiservice) ✓ build-apiservice completed successfully
14:28:32 (build) → Starting build...
14:28:32 (build) ✓ build completed successfully
14:28:32 (prepare-env) → Starting prepare-env...
14:28:32 (prepare-env) ✓ prepare-env completed successfully
14:28:32 (docker-compose-up-env) → Starting docker-compose-up-env...
14:28:32 (docker-compose-up-env) → Running docker compose up for env
14:28:35 (docker-compose-up-env) ✓ Service env is now running with Docker Compose locally (2.3s)
14:28:35 (docker-compose-up-env) ✓ docker-compose-up-env completed successfully
14:28:35 (print-env-dashboard-summary) → Starting print-env-dashboard-summary...
14:28:35 (print-webfrontend-summary) → Starting print-webfrontend-summary...
14:28:35 (print-env-dashboard-summary) i [INF] Successfully deployed env-dashboard to http://localhost:54633.
14:28:35 (print-webfrontend-summary) i [INF] Successfully deployed webfrontend to http://localhost:54463.
14:28:35 (print-env-dashboard-summary) ✓ print-env-dashboard-summary completed successfully
14:28:35 (print-webfrontend-summary) ✓ print-webfrontend-summary completed successfully
14:28:35 (deploy) → Starting deploy...
14:28:35 (deploy) ✓ deploy completed successfully
14:28:35 (pipeline execution) ✓ Completed successfully
------------------------------------------------------------
13/13 steps succeeded Total time: 20.0s
Steps Summary:
19.9 s pipeline execution
17.6 s build-apiservice
12.9 s build-webfrontend
2.3 s docker-compose-up-env
0.0 s publish-env
0.0 s deploy-prereq
0.0 s build-prereq
0.0 s build
0.0 s prepare-env
0.0 s print-env-dashboard-summary
0.0 s print-webfrontend-summary
0.0 s deploy
0.0 s publish
PIPELINE SUCCEEDED
------------------------------------------------------------

aspire deploy を呼び出すと、Aspire CLI はリソースのコンテナー イメージを構築し、それらをターゲット環境 (該当する場合) にプッシュし、AppHost の構成に従ってリソースをデプロイします。

このコマンドに関する追加情報は、aspire deploy リファレンス ドキュメントに記載されています。

デプロイメント後、Aspire CLI は、デプロイメント ターゲットに基づいて、指定された出力パス (または何も指定されていない場合はデフォルトの出力パス) にファイルのセットを書き込みます。これには、Docker Compose ファイル、Kubernetes マニフェスト、クラウド プロバイダー固有の構成ファイルなどのファイルが含まれる場合があります。

  • ディレクトリaspire-output
    • .env
    • .env.Production
    • docker-compose.yaml

aspire-output ディレクトリには、生成された環境変数と Docker Compose 構成が含まれています。最も良い点は、これらのファイルは開発者にとっては不透明であるということです。自分で記述する必要はありません。

.env.Production ファイルには、アプリ イメージの名前が含まれています。

./aspire-output/.env.Production
# apiservice のコンテナー イメージ名
APISERVICE_IMAGE=apiservice:latest
# apiservice のデフォルトのコンテナー ポート
APISERVICE_PORT=8080
# Webフロントエンドのコンテナイメージ名
WEBFRONTEND_IMAGE=webfrontend:latest
# Webフロントエンドのデフォルトのコンテナポート
WEBFRONTEND_PORT=8080

最後に、docker-compose.yaml ファイルは API とフロントエンドの両方のサービスを定義します。

./aspire-output/docker-compose.yaml
services:
env-dashboard:
image: "mcr.microsoft.com/dotnet/nightly/aspire-dashboard:latest"
expose:
- "18888"
- "18889"
networks:
- "aspire"
restart: "always"
apiservice:
image: "${APISERVICE_IMAGE}"
environment:
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
HTTP_PORTS: "${APISERVICE_PORT}"
OTEL_EXPORTER_OTLP_ENDPOINT: "http://env-dashboard:18889"
OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
OTEL_SERVICE_NAME: "apiservice"
expose:
- "${APISERVICE_PORT}"
networks:
- "aspire"
webfrontend:
image: "${WEBFRONTEND_IMAGE}"
environment:
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES: "true"
OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES: "true"
OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY: "in_memory"
ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true"
HTTP_PORTS: "${WEBFRONTEND_PORT}"
APISERVICE_HTTP: "http://apiservice:${APISERVICE_PORT}"
services__apiservice__http__0: "http://apiservice:${APISERVICE_PORT}"
APISERVICE_HTTPS: "https://apiservice:${APISERVICE_PORT}"
OTEL_EXPORTER_OTLP_ENDPOINT: "http://env-dashboard:18889"
OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
OTEL_SERVICE_NAME: "webfrontend"
ports:
- "${WEBFRONTEND_PORT}"
depends_on:
apiservice:
condition: "service_started"
networks:
- "aspire"
networks:
aspire:
driver: "bridge"

デプロイメント パッケージを追加し、AppHost を更新したので、Aspire アプリをデプロイできます。

Docker Compose にデプロイすると、コンテナー イメージが構築され、Docker Compose を使用してサービスがローカルで開始されます。

Aspire CLI — Deploy your app
aspire deploy

次の出力例を考えてみましょう。

Express/React アプリを Docker Compose にデプロイするための出力例
Aspire CLI - Deploy Express/React app with Docker Compose
13:23:29 (pipeline execution) → Starting pipeline execution...
13:23:29 (publish-env) → Starting publish-env...
13:23:29 (build-prereq) → Starting build-prereq...
13:23:29 (deploy-prereq) → Starting deploy-prereq...
13:23:29 (build-prereq) ✓ build-prereq completed successfully
13:23:29 (deploy-prereq) i [INF] Initializing deployment for environment 'Production'
13:23:29 (publish-env) i [INF] Generating Compose output
13:23:29 (deploy-prereq) i [INF] Setting default deploy tag 'aspire-deploy-20251107192329' for compute resource(s).
13:23:29 (deploy-prereq) ✓ deploy-prereq completed successfully
13:23:29 (build-frontend) → Starting build-frontend...
13:23:29 (build-frontend) i [INF] Building container image for resource frontend
13:23:29 (build-frontend) i [INF] Building image: frontend
13:23:29 (publish-env) → Writing the Docker Compose file to the output path.
13:23:29 (publish-env) ✓ Docker Compose file written successfully to ./aspire-app/aspire-output/docker-compose.yaml. (0.0s)
13:23:29 (publish-env) ✓ publish-env completed successfully
13:23:29 (publish) → Starting publish...
13:23:29 (publish) ✓ publish completed successfully
13:23:51 (build-frontend) i [INF] docker buildx for frontend succeeded.
13:23:51 (build-frontend) i [INF] Building image for frontend completed
13:23:51 (build-frontend) ✓ build-frontend completed successfully
13:23:51 (build-app) → Starting build-app...
13:23:51 (build-app) i [INF] Building container image for resource app
13:23:51 (build-app) i [INF] Building image: app
13:24:07 (build-app) i [INF] docker buildx for app succeeded.
13:24:07 (build-app) i [INF] Building image for app completed
13:24:07 (build-app) ✓ build-app completed successfully
13:24:07 (build) → Starting build...
13:24:07 (build) ✓ build completed successfully
13:24:07 (prepare-env) → Starting prepare-env...
13:24:07 (prepare-env) ✓ prepare-env completed successfully
13:24:07 (docker-compose-up-env) → Starting docker-compose-up-env...
13:24:07 (docker-compose-up-env) → Running docker compose up for env
13:24:13 (docker-compose-up-env) ✓ Service env is now running with Docker Compose locally (5.6s)
13:24:13 (docker-compose-up-env) ✓ docker-compose-up-env completed successfully
13:24:13 (print-env-dashboard-summary) → Starting print-env-dashboard-summary...
13:24:13 (print-app-summary) → Starting print-app-summary...
13:24:13 (print-env-dashboard-summary) i [INF] Successfully deployed env-dashboard to http://localhost:54633.
13:24:13 (print-app-summary) i [INF] Successfully deployed app to http://localhost:54463.
13:24:13 (print-env-dashboard-summary) ✓ print-env-dashboard-summary completed successfully
13:24:13 (print-app-summary) ✓ print-app-summary completed successfully
13:24:13 (deploy) → Starting deploy...
13:24:13 (deploy) ✓ deploy completed successfully
13:24:13 (pipeline execution) ✓ Completed successfully
------------------------------------------------------------
13/13 steps succeeded Total time: 44.1s
Steps Summary:
44.0 s pipeline execution
22.2 s build-frontend
16.3 s build-app
5.6 s docker-compose-up-env
0.0 s publish-env
0.0 s deploy-prereq
0.0 s build-prereq
0.0 s print-env-dashboard-summary
0.0 s print-app-summary
0.0 s deploy
0.0 s build
0.0 s prepare-env
0.0 s publish
PIPELINE SUCCEEDED
------------------------------------------------------------

aspire deploy を呼び出すと、Aspire CLI はリソースのコンテナー イメージを構築し、それらをターゲット環境 (該当する場合) にプッシュし、AppHost の構成に従ってリソースをデプロイします。

このコマンドに関する追加情報は、aspire deploy リファレンス ドキュメントに記載されています。

デプロイメント後、Aspire CLI は、デプロイメント ターゲットに基づいて、指定された出力パス (または何も指定されていない場合はデフォルトの出力パス) にファイルのセットを書き込みます。これには、Docker Compose ファイル、Kubernetes マニフェスト、クラウド プロバイダー固有の構成ファイルなどのファイルが含まれる場合があります。

  • ディレクトリaspire-output
    • .env
    • .env.Production
    • app.Dockerfile
    • docker-compose.yaml

aspire-output ディレクトリには、生成された環境変数、app.Dockerfile、および Docker Compose 構成が含まれています。最も良い点は、これらのファイルは開発者にとっては不透明であるということです。自分で記述する必要はありません。

app.Dockerfile は、Express API を構築し、React フロントエンドも提供するためのマルチステージ Dockerfile として生成されます。

./aspire-output/app.Dockerfile
ARG FRONTEND_IMAGENAME=frontend:latest
FROM node:22-slim AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
FROM ${FRONTEND_IMAGENAME} AS frontend_stage
FROM node:22-slim AS app
COPY --from=frontend_stage /app/dist /app/./static
COPY --from=builder /app /app
USER node
WORKDIR /app
ENTRYPOINT ["node", "--import", "tsx", "src/index.ts"]

最後に、docker-compose.yaml ファイルでサービスを定義します。

./aspire-output/docker-compose.yaml
services:
env-dashboard:
image: "mcr.microsoft.com/dotnet/nightly/aspire-dashboard:latest"
expose:
- "18888"
- "18889"
networks:
- "aspire"
restart: "always"
app:
image: "${APP_IMAGE}"
environment:
PORT: "8000"
OTEL_EXPORTER_OTLP_ENDPOINT: "http://env-dashboard:18889"
OTEL_EXPORTER_OTLP_PROTOCOL: "grpc"
OTEL_SERVICE_NAME: "app"
ports:
- "8000"
networks:
- "aspire"
networks:
aspire:
driver: "bridge"

デプロイメント後にアプリケーションが期待どおりに実行されていることを確認するには、以下で選択したデプロイメント ターゲットの手順に従ってください。

Docker Compose にデプロイする場合、aspire deploy コマンドはサービスが実行されている URL を表示します。デプロイメント出力で print-*-summary ステップを探します。これには、WithExternalHttpEndpoints で構成された各サービスのローカルホスト URL が表示されます。

デプロイメント出力には、次のような行が表示されます。

Aspire CLI - Deployment summary
14:28:35 (print-env-dashboard-summary) i [INF] Successfully deployed env-dashboard to http://localhost:54633.
14:28:35 (print-webfrontend-summary) i [INF] Successfully deployed webfrontend to http://localhost:54463.

Web ブラウザを開き、Web フロントエンドに表示されている URL (http://localhost:54463 など) に移動して、デプロイされたアプリケーションを確認します。

Docker Compose で実行されるデプロイされた ASP.NET Core/Blazor アプリケーション

フロントエンドは、ASP.NET Core Blazor アプリケーションに天気予報データを表示します。

デプロイメント後にアプリケーションが期待どおりに実行されていることを確認するには、以下で選択したデプロイメント ターゲットの手順に従ってください。

Docker Compose にデプロイする場合、aspire deploy コマンドはサービスが実行されている URL を表示します。デプロイメント出力で print-*-summary ステップを探します。これには、withExternalHttpEndpoints で構成された各サービスのローカルホスト URL が表示されます。

デプロイメント出力には、次のような行が表示されます。

Aspire CLI - Deployment summary
13:24:13 (print-env-dashboard-summary) i [INF] Successfully deployed env-dashboard to http://localhost:54633.
13:24:13 (print-app-summary) i [INF] Successfully deployed app to http://localhost:54463.

Web ブラウザを開いて、アプリに表示されている URL (http://localhost:54463 など) に移動して、デプロイされたアプリケーションを確認します。

Docker Compose で実行されるデプロイされた Express/React アプリケーション

フロントエンドは、天気予報データを React テンプレートで表示します。この例では、API サービスと React フロントエンドの両方が同じ Docker コンテナ内で実行されています。

リソースをクリーンアップする

Section titled “リソースをクリーンアップする”

アプリケーションをデプロイした後、不必要なコストの発生やローカル システム リソースの消費を避けるために、リソースをクリーンアップすることが重要です。

aspire destroy を使用して、デプロイされた環境を破棄します。このコマンドはデプロイメントを検出し、削除される内容を表示し、続行する前に確認を求めるプロンプトを表示します。

Aspire CLI - Destroy the deployed environment
aspire destroy

関連する基本的な概念について詳しくは、パイプラインとアプリのトポロジ を参照してください。

最初の Aspire アプリを構築し、本番環境にデプロイしました。ここで、「これらすべてのサービスが実際に正しく連携して動作することを確認するにはどうすればよいでしょうか?」と疑問に思われるかもしれません。そこで統合テストの出番です。Aspire を使用すると、サービス間通信やリソースの依存関係など、アプリケーション スタック全体を簡単にテストできます。方法を学ぶ準備はできましたか? 最初のテストを作成する

アプリケーションをデプロイした後、不必要なコストの発生やローカル システム リソースの消費を避けるために、リソースをクリーンアップすることが重要です。

aspire destroy を使用して、デプロイされた環境を破棄します。このコマンドはデプロイメントを検出し、削除される内容を表示し、続行する前に確認を求めるプロンプトを表示します。

Aspire CLI - Destroy the deployed environment
aspire destroy

関連する基本的な概念について詳しくは、パイプラインとアプリのトポロジ を参照してください。

最初の Aspire アプリを構築し、本番環境にデプロイしました。ここで、「これらすべてのサービスが実際に正しく連携して動作することを確認するにはどうすればよいでしょうか?」と疑問に思われるかもしれません。そこで統合テストの出番です。Aspire を使用すると、サービス間通信やリソースの依存関係など、アプリケーション スタック全体を簡単にテストできます。方法を学ぶ準備はできましたか? 最初のテストを作成する