Øvelse – Opprett en Docker Compose-fil for orkestrering

Fullført

Contoso utendørs utstyr selskapet har to tjenester som de ønsker å gruppere sammen for å bygge og distribuere som en enkelt enhet. Selskapet bestemmer seg for å bruke Docker Compose til å bygge tjenestene sammen.

I denne øvelsen oppretter du en Docker Compose YAML-fil. Deretter bruker du Docker Compose-verktøyet til både å bygge Docker-beholderbildene og kjøre dem.

Koble til kodeområdet

Hvis du koblet fra kodeområdet du brukte i forrige øvelse, kobler du til på nytt nå:

  1. Åpne en nettleser, og gå til eShopLite-repositoriet.
  2. Velg Kode, og velg deretter fanen Kodeområder.
  3. Velg kodeområdet du opprettet i forrige øvelse. GitHub åpner kodeområdet.
  4. Gå til katalogen /dotnet-docker.

Opprett Docker Compose-filen

Bruk docker-compose-filen til å konfigurere bilder for både bak- og fronttjenester:

  1. Åpne filen med navnet ./dotnet-docker/docker-compose.ymli dotnet-docker-mappen i kodeområdet. Denne filen er tom.

  2. Legg til følgende kode i docker-compose.yml-filen:

    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"
    

    Denne koden gjør flere ting:

    • Det oppretter frontnettstedet og navngir det frontend.
    • Koden angir en miljøvariabel for nettstedet: ProductEndpoint=http://backend:8080. Denne koden er hvordan fronttjenesten finner serverdeltjenesten for produkter.
    • Koden åpner en port og erklærer at den avhenger av baktjenesten.
    • Serverdeltjenesten med navnet serverdel opprettes neste gang.
    • Den siste kommandoen angir hvilken port som skal åpnes.
  3. Til sammenligning docker-compose.yml filen du måtte bruke hvis du hadde 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 er nesten identisk. Den eneste forskjellen er behovet for å ha byggefasene som peker til hver dockerfile.

Bygg bildene og kjør beholderne

Nå kan du bruke Docker Compose til å bygge og starte både front- og bakkomponenter.

  1. Hvis du vil bygge beholderbildene med .NET-beholderstøtte, velger du fanen Terminal og kjører deretter følgende kommando. Vær oppmerksom på at hvis appen fortsatt kjører, må du først lukke med CTRL+C.

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Hvis du vil starte både front-end-nettstedet og serverdelnett-API-en, kjører du denne kommandoen:

    docker compose up
    
  3. Noen utdata vises, og deretter kjører nettsteds- og nett-API-en. Du bør se utdata som ligner på dette eksemplet:

    [+] 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
    

    Et skjermbilde av kodeområdeportfanen.

  4. Hvis du vil teste fronttjenesten, velger du fanen Porter. Velg deretter globusikonet til høyre for den lokale adressen for Front End port. Nettleseren viser hjemmesiden.

  5. Velg Produkter. Katalogen viser Contosos varer.

    Et skjermbilde av eSHopLite-nettbutikkproduktene.