Ćwiczenie — tworzenie pliku docker Compose na potrzeby orkiestracji

Ukończone

Firma zajmująca się sprzętem zewnętrznym firmy Contoso ma dwie usługi, które chcą zgrupować w celu utworzenia i wdrożenia jako pojedynczej jednostki. Firma decyduje się używać narzędzia Docker Compose do tworzenia usług razem.

W tym ćwiczeniu utworzysz plik YAML narzędzia Docker Compose. Następnie użyjesz narzędzia Docker Compose, aby skompilować obrazy kontenera platformy Docker i uruchomić je.

Połączenie do przestrzeni kodu

Jeśli rozłączono się z przestrzenią kodu używaną w poprzednim ćwiczeniu, połącz się ponownie teraz:

  1. Otwórz przeglądarkę i przejdź do repozytorium eShopLite.
  2. Wybierz pozycję Kod, a następnie wybierz kartę Codespaces .
  3. Wybierz przestrzeń kodu utworzoną w poprzednim ćwiczeniu. Usługa GitHub otwiera przestrzeń kodu.
  4. Przejdź do katalogu /dotnet-docker .

Tworzenie pliku Docker Compose

Użyj pliku docker-compose, aby skonfigurować obrazy zarówno dla usług zaplecza, jak i frontonu:

  1. W folderze dotnet-docker przestrzeni kodu (tym samym folderze z README.md) otwórz plik o nazwie ./dotnet-docker/docker-compose.yml. Ten plik jest pusty.

  2. Dodaj następujący kod do pliku 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"
    

    Ten kod wykonuje kilka czynności:

    • Tworzy witrynę internetową frontonu i nada jej nazwę frontonowi.
    • Kod ustawia zmienną środowiskową dla witryny internetowej: ProductEndpoint=http://backend:8080. W tym kodzie usługa frontonu znajduje usługę zaplecza Products.
    • Kod otwiera port i deklaruje, że zależy od usługi zaplecza.
    • Następnie zostanie utworzona usługa zaplecza o nazwie backend .
    • Ostatnie polecenie określa, który port ma być otwarty.
  3. Dla porównania plik docker-compose.yml należy użyć, jeśli masz pliki dockerfile:

    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"
    

    Kod jest prawie identyczny. Jedyną różnicą jest potrzeba, aby fazy kompilacji wskazywały każdy plik dockerfile.

Kompilowanie obrazów i uruchamianie kontenerów

Teraz użyj narzędzia Docker Compose, aby skompilować i uruchomić zarówno składniki frontonu, jak i zaplecza.

  1. Aby skompilować obrazy kontenerów obsługiwane przez platformę .NET, wybierz kartę Terminal , a następnie uruchom następujące polecenie:

    dotnet publish /p:PublishProfile=DefaultContainer
    
  2. Aby uruchomić zarówno witrynę internetową frontonu, jak i internetowy interfejs API zaplecza, uruchom następujące polecenie:

    docker compose up
    
  3. Zostaną wyświetlone dane wyjściowe, a następnie zostanie uruchomiony internetowy interfejs API. Powinny zostać wyświetlone dane wyjściowe podobne do tego przykładu:

    [+] 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. Aby przetestować usługę frontonu, wybierz kartę Porty. Następnie po prawej stronie adresu lokalnego dla portu frontonu wybierz ikonę globusa. W przeglądarce zostanie wyświetlona strona główna.

  5. Wybierz produkty. Katalog zawiera towary firmy Contoso.

    A screenshot of the eSHopLite webshop products.