Øvelse – opret en Docker-meddelelsesfil til orkestrering
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:
- Åbn en browser, og gå til lageret eShopLite.
- Vælg Code, og vælg derefter fanen Codespaces .
- Vælg det kodeområde, du oprettede i den forrige øvelse. GitHub åbner kodeområdet.
- 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:
Åbn filen med navnet ./dotnet-docker/docker-compose.ymli mappen dotnet-docker i kodeområdet. Denne fil er tom.
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.
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.
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=DefaultContainerHvis du vil starte både frontendwebstedet og back end-web-API'en, skal du køre denne kommando:
docker compose upDer 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: /appHvis 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.
Vælg Products. Kataloget viser Contosos varer.