Gyakorlat – Docker Compose-fájl létrehozása vezényléshez
A Contoso kültéri berendezéseket gyártó vállalat két szolgáltatással rendelkezik, amelyeket egy egységként szeretnének összeállítani és üzembe helyezni. A vállalat úgy dönt, hogy a Docker Compose használatával együtt építi fel a szolgáltatásokat.
Ebben a gyakorlatban létrehoz egy Docker Compose YAML-fájlt. Ezután a Docker Compose segédprogrammal létrehozhatja és futtathatja a Docker-tárolólemezképeket.
Csatlakozás a kódtérbe
Ha leválasztotta a kapcsolatot az előző gyakorlatban használt kódtérről, csatlakozzon újra:
- Nyisson meg egy böngészőt, és nyissa meg az eShopLite-adattárat.
- Válassza a Kód lehetőséget, majd a Kódterek lapot.
- Válassza ki az előző gyakorlatban létrehozott kódteret. A GitHub megnyitja a kódteret.
- Nyissa meg a /dotnet-docker könyvtárat.
A Docker Compose fájl létrehozása
A docker-compose fájllal a háttér- és az előtérbeli szolgáltatásokhoz is konfigurálhat lemezképeket:
A kódtér dotnet-docker mappájában (ugyanaz a mappa README.md) nyissa meg a ./dotnet-docker/docker-compose.yml nevű fájlt. Ez a fájl üres.
Adja hozzá a következő kódot a docker-compose.yml fájlhoz:
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"
Ez a kód számos műveletet végez:
- Létrehozza az előtérbeli webhelyet, és előtérnek nevezi el.
- A kód beállít egy környezeti változót a webhelyhez:
ProductEndpoint=http://backend:8080
. Az előtérbeli szolgáltatás így találja meg a Termékek háttérszolgáltatást. - A kód megnyitja a portot, és deklarálja, hogy a háttérszolgáltatástól függ.
- A háttérrendszer nevű háttérszolgáltatás a következő lépésben jön létre.
- Az utolsó parancs megadja, hogy melyik portot kell megnyitni.
Ehhez képest a docker-compose.yml fájl, amelyet dockerfile-fájlok esetén használnia kell:
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"
A kód majdnem azonos. Az egyetlen különbség az, hogy az egyes dockerfile-okra mutató buildfázisok szükségesek.
A rendszerképek létrehozása és a tárolók futtatása
Most használja a Docker Compose-t az előtérbeli és a háttérbeli összetevők létrehozására és elindítására.
A tárolórendszerképek .NET-tárolótámogatás létrehozásához válassza a Terminál lapot, majd futtassa a következő parancsot:
dotnet publish /p:PublishProfile=DefaultContainer
Az előtérbeli webhely és a háttér webes API elindításához futtassa a következő parancsot:
docker compose up
Megjelenik néhány kimenet, majd a webhely és a webes API fut. A példához hasonló kimenetnek kell megjelennie:
[+] 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
Az előtérbeli szolgáltatás teszteléséhez válassza a Portok lapot. Ezután az előtérbeli port helyi címétől jobbra válassza a földgömb ikont. A böngésző megjeleníti a kezdőlapot.
Válassza ki a termékeket. A katalógus a Contoso áruit mutatja.