Øvelse – opret en Docker-meddelelsesfil til orkestrering

Fuldført

Contoso outdoor equipment company har to tjenester, som de gerne vil gruppere sammen for at bygge og udrulle som en enkelt enhed. Virksomheden beslutter at bruge Docker Compose til at bygge tjenesterne sammen.

I denne øvelse skal du oprette en Docker Compose YAML-fil. Derefter skal du bruge værktøjet Docker Compose til både at bygge Docker-objektbeholderafbildninger og køre dem.

Opret forbindelse til kodeområdet

Hvis du har afbrudt forbindelsen til det kodeområde, du brugte i den forrige øvelse, skal du genoprette forbindelsen nu:

  1. Åbn en browser, og gå til lageret eShopLite.
  2. Vælg Code, og vælg derefter fanen Codespaces .
  3. Vælg det kodeområde, du oprettede i den forrige øvelse. GitHub åbner kodeområdet.
  4. Gå til mappen /dotnet-docker.

Opret Docker-meddelelsesfilen

Brug docker-compose-filen til at konfigurere billeder til både back end- og front end-tjenester:

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

  2. Føj følgende kode til 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"
    

    Denne kode gør flere ting:

    • Det opretter frontendwebstedet og navngiver det frontend.
    • Koden angiver en miljøvariabel for webstedet: ProductEndpoint=http://backend:8080. Denne kode er den måde, front end-tjenesten finder back end-tjenesten Products på.
    • Koden åbner en port og erklærer, at den afhænger af back end-tjenesten.
    • Back end-tjenesten med navnet backend- oprettes derefter.
    • Den sidste kommando angiver, hvilken port der skal åbnes.
  3. Til sammenligning skal du bruge den docker-compose.yml fil, hvis du havde dockerfiler:

    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 næsten identisk. Den eneste forskel er behovet for at have de buildfaser, der peger på hver dockerfile.

Byg billederne, og kør objektbeholderne

Brug nu Docker Compose til at bygge og starte både front end- og back end-komponenter.

  1. Hvis du vil bygge objektbeholderafbildningerne med understøttelse af .NET-objektbeholdere, skal du vælge fanen Terminal og derefter køre følgende kommando. Bemærk, at hvis din app stadig kører, skal du først lukke med CTRL+C.

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Hvis du vil starte både frontendwebstedet og back end-web-API'en, skal du køre denne kommando:

    docker compose up
    
  3. Der vises noget output, og derefter kører webstedet og web-API'en. Du bør kunne se output, der ligner dette eksempel:

    [+] 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 skærmbillede af fanen codespaceporte.

  4. Hvis du vil teste frontendtjenesten, skal du vælge fanen Porte. Vælg derefter globusikonet til højre for den lokale adresse for Front End port. Browseren viser startsiden.

  5. Vælg Products. Kataloget viser Contosos varer.

    Et skærmbillede af eSHopLite-webshopprodukterne.