Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Inkluderar: Värdintegrering ingår Endast värdintegrering –  integrering ingår inte
Med AspireDocker-värdintegrering kan du distribuera dina Aspire-applikationer med hjälp av Docker Compose. De här integreringsmodellerna Docker Skapar miljöer som beräkningsresurser som kan vara värdar för dina programtjänster. När du använder den här integreringen Aspire genererar Docker Skapa filer som definierar alla tjänster, nätverk och volymer som behövs för att köra ditt program i en containerbaserad miljö. Den stöder generering Docker av Compose-filer från din appmodell för distribution, orkestrering av flera tjänster, inklusive en Aspire instrumentpanel för telemetrivisualisering, konfiguration av miljövariabler och tjänstberoenden samt hantering av containernätverk och tjänstidentifiering.
Integrering av värdtjänster
Värdintegrering Docker är tillgänglig i 📦Aspire.Hosting.Docker NuGet-paketet.
dotnet add package Aspire.Hosting.Docker
Mer information finns i dotnet lägg till paket eller Hantera paketberoenden i .NET applikationer.
Lägg till Docker resursen för Komponeringsmiljön
I följande exempel visas hur du lägger till en Docker Compose-miljö i din appmodell med hjälp av AddDockerComposeEnvironment metoden:
var builder = DistributedApplication.CreateBuilder(args);
// Add a Docker Compose environment
var compose = builder.AddDockerComposeEnvironment("compose");
// Add your services to the Docker Compose environment
var cache = builder.AddRedis("cache")
                   .PublishAsDockerComposeService((resource, service) =>
                   {
                       service.Name = "cache";
                   });
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
                        .PublishAsDockerComposeService((resource, service) =>
                        {
                            service.Name = "api";
                        });
var webApp = builder.AddProject<Projects.WebApp>("webapp")
                    .WithReference(cache)
                    .WithReference(apiService)
                    .PublishAsDockerComposeService((resource, service) =>
                    {
                        service.Name = "web";
                    });
builder.Build().Run();
Föregående kod:
- Skapar en Docker Compose-miljö med namnet compose.
- Lägger till en Redis cachetjänst som ska ingå i Docker Compose-distributionen.
- Lägger till ett API-tjänstprojekt som ska containeriseras och inkluderas i distributionen.
- Lägger till ett webbprogram som refererar till både cachen och API-tjänsten.
- Konfigurerar alla tjänster som ska publiceras som Docker Compose-tjänster med hjälp av PublishAsDockerComposeService.
Tips/Råd
Med variabeln compose tilldelad kan du skicka den till API:et WithComputeEnvironment för att skilja beräkningsresurser från lösningar som definierar mer än en. Annars krävs inte variabeln compose .
Lägg till Docker Skriv miljöresurs med egenskaper
Du kan konfigurera olika egenskaper för Docker Compose-miljön med hjälp av WithProperties metoden:
builder.AddDockerComposeEnvironment("compose")
       .WithProperties(env =>
       {
           env.DefaultContainerRegistry = "myregistry.azurecr.io";
           env.DefaultNetworkName = "my-network";
           env.BuildContainerImages = true;
       });
Lägg till Docker Compose-miljöresurs med compose-fil
Du kan anpassa den genererade Docker Compose-filen med hjälp av ConfigureComposeFile metoden:
builder.AddDockerComposeEnvironment("compose")
       .ConfigureComposeFile(composeFile =>
       {
           composeFile.Networks.Add("custom-network", new()
           {
               Driver = "bridge"
           });
       });
Lägg till Aspire instrumentpanelsresurs i miljön
Värdintegreringen Docker innehåller en Aspire instrumentpanel för telemetrivisualisering. Du kan konfigurera eller inaktivera det med hjälp av WithDashboard metoden:
// Enable dashboard with custom configuration
builder.AddDockerComposeEnvironment("compose")
       .WithDashboard(dashboard =>
       {
           dashboard.WithHostPort(8080)
                    .WithForwardedHeaders(enabled: true);
       });
// Disable dashboard
builder.AddDockerComposeEnvironment("compose")
       .WithDashboard(enabled: false);
Metoden WithHostPort konfigurerar den port som används för att komma åt Aspire instrumentpanelen från en webbläsare. Metoden WithForwardedHeaders(IResourceBuilder<DockerComposeAspireDashboardResource>, Boolean) möjliggör bearbetning av vidarebefordrade headers när instrumentpanelen nås via en omvänd proxy eller lastbalanserare.
Publicering och distribution
Om du vill distribuera ditt program med Compose Docker använder du aspire publish:
aspire publish -o docker-compose-artifacts
För mer information, se aspire publish kommandoreferens.
Det här kommandot genererar Docker Compose-filer och alla nödvändiga artefakter i den angivna utdatakatalogen. Bland de genererade filerna finns:
- 
              docker-compose.yml: Huvudfilen Docker Compose som definierar alla tjänster.
- 
              docker-compose.override.yml: Åsidosätt filen för utvecklingsspecifika inställningar.
- 
              .env: Miljövariabelfil.
- Tjänstspecifika konfigurationsfiler och skript.
Efter publiceringen kan du distribuera ditt program med Compose Docker :
cd docker-compose-artifacts
docker compose up -d
Miljövariabler
Värdtjänstintegration Docker samlar in miljövariabler från din appmodell och inkluderar dem i en .env-fil. Detta säkerställer att all konfiguration skickas korrekt till de containerbaserade tjänsterna.