Övning – Skapa en Docker Compose-fil för orkestrering

Slutförd

Contosos utomhusutrustningsföretag har två tjänster som de vill gruppera tillsammans för att skapa och distribuera som en enda enhet. Företaget bestämmer sig för att använda Docker Compose för att skapa tjänsterna tillsammans.

I den här övningen skapar du en Docker Compose YAML-fil. Sedan använder du verktyget Docker Compose för att både skapa Docker-containeravbildningarna och köra dem.

Anslut till kodområdet

Om du kopplade från kodområdet som du använde i föregående övning återansluter du nu:

  1. Öppna en webbläsare och gå till eShopLite-lagringsplatsen.
  2. Välj Kod och välj sedan fliken Codespaces .
  3. Välj det kodområde som du skapade i föregående övning. GitHub öppnar kodområdet.
  4. Gå till katalogen /dotnet-docker .

Skapa Docker Compose-filen

Använd docker-compose-filen för att konfigurera avbildningar för både serverdels- och klientdelstjänsterna:

  1. Öppna filen med namnet ./dotnet-docker/docker-compose.yml i mappen dotnet-docker i kodområdet (samma mapp med README.md). Filen är tom.

  2. Lägg till följande kod i filen docker-compose.yml:

    version: '3.4'
    
    services: 
    
        frontend:
            image: store:latest
            environment: 
                - ProductEndpoint=http://backend:8080
            ports:
                - "32000:8080"
            depends_on: 
                - backend
        backend:
            image: products:latest
            ports: 
                - "32001:8080"
    

    Den här koden gör flera saker:

    • Den skapar klientsidans webbplats och namnger den klientdel.
    • Koden anger en miljövariabel för webbplatsen: ProductEndpoint=http://backend:8080. Den här koden är hur klientdelstjänsten hittar tjänsten Products backend.
    • Koden öppnar en port och deklarerar att den är beroende av serverdelstjänsten.
    • Serverdelstjänsten med namnet backend skapas härnäst.
    • Det sista kommandot anger vilken port som ska öppnas.
  3. Som jämförelse skulle den docker-compose.yml fil som du skulle behöva använda om du hade dockerfiles:

    version: '3.4'
    
    services: 
    
        frontend:
            image: storeimage
            build:
                context: .
                dockerfile: ./Store/Dockerfile
            environment: 
               - ProductEndpoint=http://backend:8080
            ports:
               - "32000:8080"
            depends_on: 
               - backend
        backend:
            image: productservice
            build: 
                context: .
                dockerfile: ./Products/Dockerfile
            ports: 
               - "32001:8080"
    

    Koden är nästan identisk. Den enda skillnaden är behovet av att ha de byggfaser som pekar på varje dockerfile.

Skapa avbildningarna och kör containrarna

Använd nu Docker Compose för att skapa och starta både klientdels- och serverdelskomponenter.

  1. Om du vill skapa containeravbildningarna för oss .NET-containerstöd väljer du fliken Terminal och kör sedan följande kommando:

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Kör det här kommandot för att starta både klientsidans webbplats och serverdelswebb-API:et:

    docker compose up
    
  3. Vissa utdata visas och sedan körs webbplatsen och webb-API:et. Du bör se utdata som liknar det här exemplet:

    [+] Running 2/0
        ✔ Container finished-files-backend-1   Created                                                                                   0.0s 
        ✔ Container finished-files-frontend-1  Created                                                                                   0.0s 
    Attaching to backend-1, frontend-1
    ...
    backend-1   | info: Microsoft.Hosting.Lifetime[0]
    backend-1   |       Hosting environment: Production
    backend-1   | info: Microsoft.Hosting.Lifetime[0]
    backend-1   |       Content root path: /app
    

    A screenshot of the codespace ports tab.

  4. Om du vill testa klientdelstjänsten väljer du fliken Portar . Välj sedan globeikonen till höger om den lokala adressen för Front End-porten . Webbläsaren visar startsidan.

  5. Välj produkter. Katalogen visar Contosos varor.

    A screenshot of the eSHopLite webshop products.