コンテナーレジストリの設定
Aspire 13.1 では明示的なコンテナーレジストリ設定が導入され、デプロイ時にコンテナーイメージをどこへいつプッシュするかを開発者が制御できるようになりました。この記事では、Aspire アプリケーションのコンテナーレジストリを設定する方法について説明します。
コンテナーレジストリの設定
Section titled “コンテナーレジストリの設定”Aspire アプリケーションを本番環境にデプロイする際、コンテナー化されたサービスをコンテナーレジストリにプッシュする必要があります。Aspire 13.1 以前は、レジストリ設定が暗黙的であることが多く、デプロイプロセスの制御や把握が困難でした。新しい ContainerRegistryResource では、次の項目を明示的に設定できます:
- 汎用コンテナーレジストリ — DockerHub、GitHub Container Registry (GHCR)、Harbor、またはその他の Docker 互換レジストリ
- Azure Container Registry — 自動認証情報管理による第一級サポート
- パイプライン統合 —
aspire do pushを使用してイメージのビルドとプッシュのタイミングを制御 - 認証 — レジストリの認証情報を安全に設定
汎用コンテナーレジストリ
Section titled “汎用コンテナーレジストリ”AddContainerRegistry メソッドを使用して、アプリケーションの汎用コンテナーレジストリを設定します。DockerHub、GitHub Container Registry、Harbor、プライベートレジストリなど、あらゆる Docker 互換レジストリで使用できます。
基本的な使い方
Section titled “基本的な使い方”次の例では、コンテナーレジストリを設定し、プロジェクトリソースに関連付けます:
var builder = DistributedApplication.CreateBuilder(args);
// コンテナーレジストリを追加するvar registry = builder.AddContainerRegistry("myregistry", "registry.example.com");
// レジストリをプロジェクトに関連付けるvar api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);
builder.Build().Run();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 の例
Section titled “DockerHub の例”DockerHub にイメージをプッシュするには、レジストリエンドポイントとして docker.io を指定します:
var builder = DistributedApplication.CreateBuilder(args);
var registry = builder.AddContainerRegistry("dockerhub", "docker.io");
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);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 の例
Section titled “GitHub Container Registry の例”GitHub Container Registry (GHCR) にイメージをプッシュするには:
var builder = DistributedApplication.CreateBuilder(args);
var registry = builder.AddContainerRegistry("ghcr", "ghcr.io");
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);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);プライベートレジストリの例
Section titled “プライベートレジストリの例”プライベートレジストリの場合は、完全なレジストリ URL を指定します:
var builder = DistributedApplication.CreateBuilder(args);
var registry = builder.AddContainerRegistry( "private-registry", "registry.mycompany.com:5000");
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);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 “認証と認証情報”コンテナーレジストリには通常、イメージをプッシュするための認証が必要です。パラメーターとシークレットを使用して認証情報を設定できます。
パラメーターを使用したレジストリ認証情報の設定
Section titled “パラメーターを使用したレジストリ認証情報の設定”パラメーターを使用すると、レジストリ設定を動的に提供できます:
var builder = DistributedApplication.CreateBuilder(args);
var registryEndpoint = builder.AddParameter("registry-endpoint");var registryRepository = builder.AddParameter("registry-repository");
var registry = builder.AddContainerRegistry( "myregistry", registryEndpoint, registryRepository);
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);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);パラメーターの詳細については、外部パラメーター を参照してください。
認証情報の設定
Section titled “認証情報の設定”レジストリの認証情報は、デプロイ環境を通じて設定する必要があります:
Docker ログイン
Section titled “Docker ログイン”イメージをプッシュする前に、レジストリへの認証を確認してください:
docker login registry.example.comDockerHub の場合:
docker login docker.io -u usernameGitHub Container Registry の場合:
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdinCI/CD の設定
Section titled “CI/CD の設定”CI/CD 環境 (GitHub Actions、Azure Pipelines など) では、シークレットを使用して認証情報を設定します:
- 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 pushAzure Container Registry
Section titled “Azure Container Registry”Azure Container Registry (ACR) は、自動認証情報管理と並列プロビジョニングにより、Aspire との第一級の統合を提供します。
明示的な ACR 設定
Section titled “明示的な ACR 設定”Aspire 13.1 では、Azure Container Apps 環境向けの明示的なコンテナーレジストリ設定が導入されました:
var builder = DistributedApplication.CreateBuilder(args);
var environment = builder.AddAzureContainerAppEnvironment("myenv");
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(environment);
builder.Build().Run();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 統合 を参照してください。
既存の ACR を使用する
Section titled “既存の ACR を使用する”既存の Azure Container Registry を使用するには、ACR を追加する際に PublishAsExisting メソッドを呼び出します:
var builder = DistributedApplication.CreateBuilder(args);
var registryName = builder.AddParameter("registryName");var rgName = builder.AddParameter("rgName");
var acr = builder.AddAzureContainerRegistry("my-acr") .PublishAsExisting(registryName, rgName);
builder.AddAzureContainerAppEnvironment("env") .WithAzureContainerRegistry(acr);
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(acr);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);パイプライン統合
Section titled “パイプライン統合”Aspire のデプロイパイプラインには、コンテナーイメージをレジストリにプッシュするための専用の push ステップが含まれています。
aspire do push の使い方
Section titled “aspire do push の使い方”aspire do push コマンドは、コンテナーイメージをビルドし、設定されたレジストリにプッシュします:
aspire do pushこのコマンドは以下を実行します:
- コンピューティングリソースのすべてのコンテナーイメージをビルドします
- 適切なレジストリとリポジトリ名でイメージにタグを付けます
- 設定されたレジストリにイメージをプッシュします
出力例:
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-registry16: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 do buildaspire do deploydeploy ステップには、すべてのリソースのビルド、プッシュ、デプロイが含まれます。
マルチレジストリデプロイ
Section titled “マルチレジストリデプロイ”リソースごとに異なるレジストリを設定できます:
var builder = DistributedApplication.CreateBuilder(args);
var publicRegistry = builder.AddContainerRegistry("dockerhub", "docker.io");var privateRegistry = builder.AddContainerRegistry( "private", "registry.company.com");
var publicApi = builder.AddProject<Projects.PublicApi>("public-api") .WithContainerRegistry(publicRegistry);
var internalApi = builder.AddProject<Projects.InternalApi>("internal-api") .WithContainerRegistry(privateRegistry);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 “パラメーター化されたレジストリ設定”環境をまたいで柔軟なデプロイが必要な場合にパラメーターを使用できます:
var builder = DistributedApplication.CreateBuilder(args);
var registryEndpoint = builder.AddParameter("registry-endpoint");var registryRepository = builder.AddParameter("registry-repository");
var registry = builder.AddContainerRegistry( "container-registry", registryEndpoint, registryRepository);
var api = builder.AddProject<Projects.Api>("api") .WithContainerRegistry(registry);
var worker = builder.AddProject<Projects.Worker>("worker") .WithContainerRegistry(registry);
builder.Build().Run();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 の設定でパラメーターを設定します:
{ "Parameters": { "registry-endpoint": "ghcr.io", "registry-repository": "myorg" }}または、環境変数を使用して設定することもできます:
export Parameters__registry_endpoint="ghcr.io"export Parameters__registry_repository="myorg"ACR を使用した Azure デプロイ
Section titled “ACR を使用した Azure デプロイ”次のコードは、Azure Container Apps と ACR を使用した完全な AppHost の例です:
var builder = DistributedApplication.CreateBuilder(args);
// ACR を含む Azure Container Apps 環境を作成するvar acaEnv = builder.AddAzureContainerAppEnvironment("production");
// Redis キャッシュを追加するvar cache = builder.AddRedis("cache");
// レジストリ設定付きで API を追加するvar api = builder.AddProject<Projects.Api>("api") .WithReference(cache) .WithContainerRegistry(acaEnv);
// レジストリ設定付きでフロントエンドを追加するvar web = builder.AddProject<Projects.Web>("web") .WithReference(api) .WithContainerRegistry(acaEnv);
builder.Build().Run();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();明示的な設定のメリット
Section titled “明示的な設定のメリット”Aspire 13.1 で導入された明示的なコンテナーレジストリ設定には、次のようなメリットがあります:
- 可視性 — イメージのプッシュ先を明確に把握できます
- 制御性 — レジストリエンドポイントと認証情報を明示的に設定できます
- 並列処理 — レジストリのプロビジョニングが他のリソースと並列で実行されます
- 早期フィードバック — レジストリが準備でき次第イメージがプッシュされ、デプロイが高速化されます
- 柔軟性 — あらゆる Docker 互換レジストリをサポートします
コンテナーレジストリの改善についての詳細は、Safia Abdalla のブログ投稿「Aspire のイメージ問題を修正する」 を参照してください。