ドキュメントAspire を試す
ドキュメント試す

コンテナーレジストリの設定

Aspire 13.1 では明示的なコンテナーレジストリ設定が導入され、デプロイ時にコンテナーイメージをどこへいつプッシュするかを開発者が制御できるようになりました。この記事では、Aspire アプリケーションのコンテナーレジストリを設定する方法について説明します。

Aspire アプリケーションを本番環境にデプロイする際、コンテナー化されたサービスをコンテナーレジストリにプッシュする必要があります。Aspire 13.1 以前は、レジストリ設定が暗黙的であることが多く、デプロイプロセスの制御や把握が困難でした。新しい ContainerRegistryResource では、次の項目を明示的に設定できます:

  • 汎用コンテナーレジストリ — DockerHub、GitHub Container Registry (GHCR)、Harbor、またはその他の Docker 互換レジストリ
  • Azure Container Registry — 自動認証情報管理による第一級サポート
  • パイプライン統合aspire do push を使用してイメージのビルドとプッシュのタイミングを制御
  • 認証 — レジストリの認証情報を安全に設定

AddContainerRegistry メソッドを使用して、アプリケーションの汎用コンテナーレジストリを設定します。DockerHub、GitHub Container Registry、Harbor、プライベートレジストリなど、あらゆる Docker 互換レジストリで使用できます。

次の例では、コンテナーレジストリを設定し、プロジェクトリソースに関連付けます:

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
();
// コンテナーレジストリを追加する
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
("myregistry", "registry.example.com");
// レジストリをプロジェクトに関連付ける
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

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

Runs the distributed application

run
();

上記のコードについて:

  • registry.example.com を指すコンテナーレジストリリソースを作成します。
  • レジストリを api プロジェクトに関連付けます。
  • デプロイ時に、api プロジェクトはコンテナーイメージとしてビルドされ、指定されたレジストリにプッシュされます。

DockerHub にイメージをプッシュするには、レジストリエンドポイントとして docker.io を指定します:

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
();
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
("dockerhub", "docker.io");
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);

GitHub Container Registry (GHCR) にイメージをプッシュするには:

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
();
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
("ghcr", "ghcr.io");
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);

プライベートレジストリの場合は、完全なレジストリ URL を指定します:

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
();
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
(
"private-registry",
"registry.mycompany.com:5000");
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);

コンテナーレジストリには通常、イメージをプッシュするための認証が必要です。パラメーターとシークレットを使用して認証情報を設定できます。

パラメーターを使用したレジストリ認証情報の設定

Section titled “パラメーターを使用したレジストリ認証情報の設定”

パラメーターを使用すると、レジストリ設定を動的に提供できます:

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
();
const
const registryEndpoint: ParameterResource
registryEndpoint
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("registry-endpoint");
const
const registryRepository: ParameterResource
registryRepository
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("registry-repository");
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, repository?: string | ParameterResource): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
(
"myregistry",
const registryEndpoint: ParameterResource
registryEndpoint
,
const registryRepository: ParameterResource
registryRepository
);
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);

パラメーターの詳細については、外部パラメーター を参照してください。

レジストリの認証情報は、デプロイ環境を通じて設定する必要があります:

イメージをプッシュする前に、レジストリへの認証を確認してください:

Docker ログイン
docker login registry.example.com

DockerHub の場合:

DockerHub ログイン
docker login docker.io -u username

GitHub Container Registry の場合:

GHCR ログイン
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

CI/CD 環境 (GitHub Actions、Azure Pipelines など) では、シークレットを使用して認証情報を設定します:

GitHub Actions の例
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push images
run: aspire do push

Azure Container Registry (ACR) は、自動認証情報管理と並列プロビジョニングにより、Aspire との第一級の統合を提供します。

Aspire 13.1 では、Azure Container Apps 環境向けの明示的なコンテナーレジストリ設定が導入されました:

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
();
const
const environment: AzureContainerAppEnvironmentResource
environment
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addAzureContainerAppEnvironment(name: string): AzureContainerAppEnvironmentResource

Adds a container app environment resource to the distributed application builder.

addAzureContainerAppEnvironment
("myenv");
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const environment: AzureContainerAppEnvironmentResource
environment
);
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

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

Runs the distributed application

run
();

上記の例について:

  • コードは ACR が関連付けられた Azure Container Apps 環境を作成します。
  • ACR はその環境と並列にプロビジョニングされます。
  • レジストリが使用可能になるとすぐにイメージがプッシュされます。
  • 認証情報は Azure 認証を通じて自動的に管理されます。

詳細については、Azure Container Registry 統合 を参照してください。

既存の Azure Container Registry を使用するには、ACR を追加する際に PublishAsExisting メソッドを呼び出します:

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
();
const
const registryName: ParameterResource
registryName
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("registryName");
const
const rgName: ParameterResource
rgName
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("rgName");
const
const acr: AzureContainerRegistryResource
acr
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addAzureContainerRegistry(name: string): AzureContainerRegistryResource

Adds an Azure Container Registry resource to the application model.

addAzureContainerRegistry
("my-acr");
await
const acr: AzureContainerRegistryResource
acr
.
AzureBicepResource.publishAsExisting(name: string | ParameterResource, resourceGroup?: string | ParameterResource): AzureContainerRegistryResource (+1 overload)

Marks the resource as an existing resource when the application is deployed.

publishAsExisting
(
const registryName: ParameterResource
registryName
,
const rgName: ParameterResource
rgName
);
const
const environment: AzureContainerAppEnvironmentResource
environment
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addAzureContainerAppEnvironment(name: string): AzureContainerAppEnvironmentResource

Adds a container app environment resource to the distributed application builder.

addAzureContainerAppEnvironment
("env");
await
const environment: AzureContainerAppEnvironmentResource
environment
.
AzureBicepResource.withAzureContainerRegistry(registryBuilder: AzureContainerRegistryResource): AzureContainerAppEnvironmentResource

Configures a compute environment resource to use an Azure Container Registry.

withAzureContainerRegistry
(
const acr: AzureContainerRegistryResource
acr
);
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const acr: AzureContainerRegistryResource
acr
);

Aspire のデプロイパイプラインには、コンテナーイメージをレジストリにプッシュするための専用の push ステップが含まれています。

aspire do push コマンドは、コンテナーイメージをビルドし、設定されたレジストリにプッシュします:

Aspire CLI — イメージのプッシュ
aspire do push

このコマンドは以下を実行します:

  1. コンピューティングリソースのすべてのコンテナーイメージをビルドします
  2. 適切なレジストリとリポジトリ名でイメージにタグを付けます
  3. 設定されたレジストリにイメージをプッシュします

出力例:

出力
16:03:38 (pipeline-execution) → Starting pipeline-execution...
16:03:38 (build-api) → Starting build-api...
16:03:43 (push-api) → Starting push-api...
16:03:43 (push-api) → Pushing api to container-registry
16:03:44 (push-api) i [INF] Docker tag for api -> docker.io/username/api:latest succeeded.
16:04:05 (push-api) i [INF] Docker push for docker.io/username/api:latest succeeded.
16:04:05 (push-api) ✓ Successfully pushed api to docker.io/username/api:latest (21.3s)
16:04:05 (push-api) ✓ push-api completed successfully

パイプラインコマンドの詳細については、aspire do コマンド を参照してください。

パイプラインステップの依存関係

Section titled “パイプラインステップの依存関係”

push ステップは依存関係を自動的に処理します:

  • build-prereq — ビルド前に前提条件を確認します
  • build-<resource> — 各リソースのコンテナーイメージをビルドします
  • push-<resource> — レジストリにイメージをプッシュします

個々のステップまたはパイプライン全体を実行できます:

Aspire CLI — ビルドのみ
aspire do build
Aspire CLI — 完全デプロイ
aspire do deploy

deploy ステップには、すべてのリソースのビルド、プッシュ、デプロイが含まれます。

リソースごとに異なるレジストリを設定できます:

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
();
const
const publicRegistry: ContainerRegistryResource
publicRegistry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
("dockerhub", "docker.io");
const
const privateRegistry: ContainerRegistryResource
privateRegistry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, options?: {
repository?: string | ParameterResource;
}): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
(
"private",
"registry.company.com");
const
const publicApi: ProjectResource
publicApi
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("public-api", "../PublicApi/PublicApi.csproj");
await
const publicApi: ProjectResource
publicApi
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const publicRegistry: ContainerRegistryResource
publicRegistry
);
const
const internalApi: ProjectResource
internalApi
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("internal-api", "../InternalApi/InternalApi.csproj");
await
const internalApi: ProjectResource
internalApi
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const privateRegistry: ContainerRegistryResource
privateRegistry
);

パラメーター化されたレジストリ設定

Section titled “パラメーター化されたレジストリ設定”

環境をまたいで柔軟なデプロイが必要な場合にパラメーターを使用できます:

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
();
const
const registryEndpoint: ParameterResource
registryEndpoint
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("registry-endpoint");
const
const registryRepository: ParameterResource
registryRepository
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addParameter(name: string, options?: {
value?: string;
publishValueAsDefault?: boolean;
secret?: boolean;
}): ParameterResource (+1 overload)

Adds a parameter resource

addParameter
("registry-repository");
const
const registry: ContainerRegistryResource
registry
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addContainerRegistry(name: string, endpoint: string | ParameterResource, repository?: string | ParameterResource): ContainerRegistryResource (+1 overload)

Adds a container registry resource

addContainerRegistry
(
"container-registry",
const registryEndpoint: ParameterResource
registryEndpoint
,
const registryRepository: ParameterResource
registryRepository
);
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);
const
const worker: ProjectResource
worker
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("worker", "../Worker/Worker.csproj");
await
const worker: ProjectResource
worker
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const registry: ContainerRegistryResource
registry
);
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

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

Runs the distributed application

run
();

AppHost の設定でパラメーターを設定します:

appsettings.json
{
"Parameters": {
"registry-endpoint": "ghcr.io",
"registry-repository": "myorg"
}
}

または、環境変数を使用して設定することもできます:

環境変数
export Parameters__registry_endpoint="ghcr.io"
export Parameters__registry_repository="myorg"

次のコードは、Azure Container Apps と ACR を使用した完全な AppHost の例です:

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
();
// ACR を含む Azure Container Apps 環境を作成する
const
const environment: AzureContainerAppEnvironmentResource
environment
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addAzureContainerAppEnvironment(name: string): AzureContainerAppEnvironmentResource

Adds a container app environment resource to the distributed application builder.

addAzureContainerAppEnvironment
("production");
// Redis キャッシュを追加する
const
const cache: RedisResource
cache
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addRedis(name: string, options?: {
port?: number;
password?: string | ParameterResource;
}): RedisResource (+1 overload)

Adds a Redis container to the application model.

addRedis
("cache");
// レジストリ設定付きで API を追加する
const
const api: ProjectResource
api
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("api", "../Api/Api.csproj");
await
const api: ProjectResource
api
.
ProjectResource.withReference(source: EndpointReference | string | uri, options?: {
connectionName?: string;
optional?: boolean;
name?: string;
} | undefined): ProjectResource (+1 overload)

Adds a reference to another resource

withReference
(
const cache: RedisResource
cache
);
await
const api: ProjectResource
api
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const environment: AzureContainerAppEnvironmentResource
environment
);
// レジストリ設定付きでフロントエンドを追加する
const
const web: ProjectResource
web
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addProject(name: string, projectPath: string, options?: {
launchProfileOrOptions?: ProjectResourceOptions;
}): ProjectResource (+1 overload)

Adds a .NET project resource

addProject
("web", "../Web/Web.csproj");
await
const web: ProjectResource
web
.
ProjectResource.withReference(source: EndpointReference | string | uri, options?: {
connectionName?: string;
optional?: boolean;
name?: string;
} | undefined): ProjectResource (+1 overload)

Adds a reference to another resource

withReference
(
const api: ProjectResource
api
);
await
const web: ProjectResource
web
.
ProjectResource.withContainerRegistry(registry: IResource): ProjectResource

Configures the resource to use the specified container registry for container image operations.

withContainerRegistry
(
const environment: AzureContainerAppEnvironmentResource
environment
);
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

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

Runs the distributed application

run
();

Aspire 13.1 で導入された明示的なコンテナーレジストリ設定には、次のようなメリットがあります:

  • 可視性 — イメージのプッシュ先を明確に把握できます
  • 制御性 — レジストリエンドポイントと認証情報を明示的に設定できます
  • 並列処理 — レジストリのプロビジョニングが他のリソースと並列で実行されます
  • 早期フィードバック — レジストリが準備でき次第イメージがプッシュされ、デプロイが高速化されます
  • 柔軟性 — あらゆる Docker 互換レジストリをサポートします

コンテナーレジストリの改善についての詳細は、Safia Abdalla のブログ投稿「Aspire のイメージ問題を修正する」 を参照してください。