Gyakorlat – Tárolórendszerkép létrehozása a .NET-mikroszolgáltatáshoz

Befejeződött

Ebben a gyakorlatban létrehoz egy mikroszolgáltatás-végpontot, és tárolóba helyezi azt a .NET SDK és a Docker használatával.

Feljegyzés

Ezt a gyakorlatot a Dockert és a .NET SDK-t tartalmazó GitHub Codespaces egy példányában végezheti el. Ha ezeket az eszközöket és technikákat a saját fejlesztési környezetében használja, győződjön meg arról, hogy telepítve vannak ezek az előfeltételek.

A fejlesztői környezet megnyitása

Használhat egy GitHub-kódteret, amely a gyakorlatot üzemelteti, vagy elvégezheti a gyakorlatot helyileg a Visual Studio Code-ban.

Kódtér használatához hozzon létre egy előre konfigurált GitHub Codespace-et ezzel a kódtér-létrehozási hivatkozással.

A GitHub több percet vesz igénybe a kódtér létrehozásához és konfigurálásához. Amikor a folyamat befejeződött, megjelenik a gyakorlat kódfájljai. A modul hátralévő részében használt kód a /dotnet-docker könyvtárban található.

A Visual Studio Code használatához klónozza az https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative adattárat a helyi gépre. Ekkor:

  1. Telepítse a Dev Container Visual Studio Code-ban való futtatásához szükséges rendszerkövetelményeket .
  2. Győződjön meg arról, hogy a Docker fut.
  3. Egy új Visual Studio Code-ablakban nyissa meg a klónozott adattár mappáját
  4. Nyomja le a Ctrl Shift+P billentyűkombinációt +a parancskatalógus megnyitásához.
  5. Keresés: >Tárolók fejlesztése: Újraépítés és újranyitás a tárolóban
  6. Válassza az eShopLite - dotnet-docker lehetőséget a legördülő listából. A Visual Studio Code helyileg hozza létre a fejlesztési tárolót.

A termékek háttérrendszerképének létrehozása a .NET-közzététel használatával

A legújabb .NET 8 kiadás javítja a tárolók támogatását. A dotnet publish parancs használatával Docker-rendszerképet hozhat létre a mikroszolgáltatásokhoz. A parancs létrehoz egy gyökér nélküli tárolórendszerképet, amely szolgáltatásokat futtat egy app fiók alatt. A gyökér nélküli tárolók futtatása kiválóan alkalmas a biztonságra és a teljesítményre. A parancs tudja, hogyan választhatja ki a legjobb alaprendszerképet a projektfájl beállításainak ellenőrzésével.

  1. Az összes szolgáltatás lemezképeinek eShopLite létrehozásához lépjen a TERMINÁL lapra, és futtassa a következő parancsot:

    cd ./dotnet-docker 
     dotnet publish /p:PublishProfile=DefaultContainer
    

    A kimenet a következő üzenetekhez hasonlóan jelenik meg:

    DataEntities -> /workspaces/mslearn-dotnet-cloudnative/dotnet-docker/DataEntities/bin/Release/net8.0/publish/
    Products -> /workspaces/mslearn-dotnet-cloudnative/dotnet-docker/Products/bin/Release/net8.0/Products.dll
    Products -> /workspaces/mslearn-dotnet-cloudnative/dotnet-docker/Products/bin/Release/net8.0/publish/
    Store -> /workspaces/mslearn-dotnet-cloudnative/dotnet-docker/Store/bin/Release/net8.0/Store.dll
    Store -> /workspaces/mslearn-dotnet-cloudnative/dotnet-docker/Store/bin/Release/net8.0/publish/
    Building image 'store' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
    Building image 'products' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
    Pushed image 'store:latest' to local registry via 'docker'.
    Pushed image 'products:latest' to local registry via 'docker'.
    

    A parancs beolvassa a megoldásfájlt, megállapította, hogy három projektet tartalmaz, létrehozta őket, és képeket hozott létre az áruház- és termékprojektekhez. A rendszerképeket a projektekről nevezik el, és közzéteszik a helyi Docker-beállításjegyzékben.

  2. Ellenőrizze, hogy a képek elérhetők-e a Dockerben:

    docker images
    

    A kimenet a következő üzenetekhez hasonlóan jelenik meg:

    REPOSITORY                          TAG       IMAGE ID       CREATED              SIZE
    products                            latest    63614e340088   About a minute ago   293MB
    store                               latest    e9458c3abdb1   About a minute ago   218MB
    

Dockerfile használata a Termékek háttérrendszerkép létrehozásához

Ha jobban szeretné szabályozni a rendszerképek létrehozásának módját, a Dockerfile használatával létrehozhat egy képet a Termékek webszolgáltatáshoz.

  1. Az EXPLORER panelen hozzon létre egy Dockerfile nevű fájlt a ./dotnet-docker/Products fájlban. A fájl üres.

  2. Írja be a következő kódot:

    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
    
    WORKDIR /DataEntities
    COPY "DataEntities/DataEntities.csproj" .
    RUN dotnet restore
    COPY "DataEntities" .
    RUN dotnet publish -c release -o /app
    

    A következő lépések elvégzése után ez a kód beállítja a DataEntities könyvtárat a Products docker rendszerképben:

    • Húzza le a képet, mcr.microsoft.com/dotnet/sdk:8.0 és nevezze el a képet build.
    • Állítsa be a munkakönyvtárat a képen belül a következőre /DataEntities: .
    • Másolja a helyben talált DataEntities.csproj fájlt a /DataEntities létrehozott könyvtárba.
    • Hívja fel dotnet restore a projektet.
    • Másolja a helyi DataEntities könyvtár minden elemét a képre.
    • Hívja fel dotnet publish a projektet.
  3. Közvetlenül az utolsó sor alatt adja meg ezt a kódot:

     WORKDIR /src
     COPY Products/Products.csproj .
     RUN dotnet restore
     COPY Products .
     RUN dotnet publish -c release -o /app
    

    Ez a kód egymás után hajtja végre a következő lépéseket a meghíváskor:

    • Állítsa be a munkakönyvtárat a képen belül a következőre /src: .
    • Másolja a helyileg talált Products.csproj fájlt a /src létrehozott könyvtárba.
    • Hívja fel dotnet restore a projektet.
    • Másolja a helyi Termékek könyvtár minden elemét a képre.
    • Hívja fel dotnet publish a projektet.
  4. Közvetlenül az utolsó sor alatt adja meg ezt a kódot:

     FROM mcr.microsoft.com/dotnet/aspnet:8.0
     WORKDIR /app
     EXPOSE 80
     EXPOSE 443
     COPY --from=build /app .
     ENTRYPOINT ["dotnet", "Products.dll"]
    

    Ez a kód egymás után hajtja végre a következő lépéseket a meghíváskor:

    • Húzza le a mcr.microsoft.com/dotnet/aspnet:8.0 képet.
    • Állítsa be a munkakönyvtárat a képen belül a következőre /app: .
    • Tegye elérhetővé a 80-at és a 443-at.
    • Másolja a létrehozott buildkép alkalmazáskönyvtárából a rendszerkép alkalmazáskönyvtárába.
    • A kép dotnetProducts.dll belépési pontjának beállítása argumentumként.

A Docker-rendszerkép létrehozása

A Dockerfile befejezése után a következő lépés egy Docker-rendszerkép létrehozása:

  1. A Termékek háttérszolgáltatás rendszerképének létrehozásához lépjen a TERMINÁL lapra, és futtassa a következő parancsot:

    cd ./dotnet-docker 
     docker build -t productsbackend:latest -f Products/Dockerfile .
    

    Ez futtatja a parancsokat a Dockerfile-ban az aktuális könyvtárban, és alkalmazza a productsbackend:latest címkét az eredményül kapott lemezképre.

  2. Sok kimenet után a rendszerkép létre lesz hozva. A beírás docker images megjeleníti a kódtérben lévő összes kép listáját, beleértve a productsbackendet is. A másik kép maga a kódtér.

    A kimenet a következő üzenetekhez hasonlóan jelenik meg:

    REPOSITORY                          TAG       IMAGE ID       CREATED              SIZE
    products                            latest    63614e340088   10 minutes ago       293MB
    store                               latest    e9458c3abdb1   10 minutes ago       218MB
    productsbackend                     latest   190783f7e06f    About a minute ago   293MB
    

Gondolja át, hogy mi a különbség az alkalmazásokban lévő egyes mikroszolgáltatások Dockerfile-jainak manuális létrehozása és használata dotnet publish között.

A tároló futtatása és a szolgáltatás tesztelése

Most már a rendszerkép használatával futtathatja és üzemeltetheti a Products szolgáltatást.

  1. Ha tárolót szeretne létrehozni és futtatni az új termékrendszerképből , és el szeretnéérhetővé tenni a szolgáltatást a 32001-s porton, futtassa a következő parancsot:

    docker run -it --rm -p 32001:8080  products
    

    Vagy ha a Dockerfile használatával létrehozott lemezképet szeretné futtatni, futtassa a következőt:

    docker run -it --rm -p 32001:8080 productsbackend
    
  2. A szolgáltatás teszteléséhez váltson a PORTS fülre, majd a Háttérport helyi címétől jobbra válassza a földgömb ikont. A böngésző megnyit egy új lapot ezen a címen.

    Képernyőkép a háttértermék-szolgáltatáshoz való csatlakozásról.

  3. Egyes termékek lekérdezéséhez fűzze hozzá a címet az /api/product fájlhoz, majd nyomja le az Enter billentyűt. Néhány termékinformációnak JSON formátumban kell megjelennie.

    [
        {
            "id": 1,
            "name": "Solar Powered Flashlight",
            "description": "A fantastic product for outdoor enthusiasts",
            "price": 19.99,
            "imageUrl": "product1.png"
        },
        {
            "id": 2,
            "name": "Hiking Poles",
            "description": "Ideal for camping and hiking trips",
            "price": 24.99,
            "imageUrl": "product2.png"
        },
        {
            "id": 3,
            "name": "Outdoor Rain Jacket",
            "description": "This product will keep you warm and dry in all weathers",
            "price": 49.99,
            "imageUrl": "product3.png"
        },
        ...
    ]