Øvelse – Opprett en Docker Compose-fil for orkestrering
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å:
- Åpne en nettleser, og gå til eShopLite-repositoriet.
- Velg Kode, og velg deretter fanen Kodeområder.
- Velg kodeområdet du opprettet i forrige øvelse. GitHub åpner kodeområdet.
- Gå til katalogen /dotnet-docker.
Opprett Docker Compose-filen
Bruk docker-compose-filen til å konfigurere bilder for både bak- og fronttjenester:
Åpne filen med navnet ./dotnet-docker/docker-compose.ymli dotnet-docker-mappen i kodeområdet. Denne filen er tom.
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.
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.
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=DefaultContainerHvis du vil starte både front-end-nettstedet og serverdelnett-API-en, kjører du denne kommandoen:
docker compose upNoen 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: /appHvis 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.
Velg Produkter. Katalogen viser Contosos varer.