Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här handledningen förbereder du en flercontainersapplikation att använda i Kubernetes. Du använder befintliga utvecklingsverktyg som Docker Compose för att bygga och testa programmet lokalt. Du lär dig att:
- Klona en exempelprogramkälla från GitHub.
- Skapa en containeravbildning från exempelprogrammets källa.
- Testa programmet med flera containrar i en lokal Docker-miljö.
När det är klart körs följande program i din lokala utvecklingsmiljö:
I senare självstudier laddar du upp containeravbildningen till en Azure Container Registry (ACR) och distribuerar den sedan till ett AKS-kluster.
Innan du börjar
Den här självstudiekursen förutsätter grundläggande kunskaper om grundläggande Docker-begrepp som containrar, containeravbildningar och docker-kommandon. Läs mer om grunderna för containrar i Kom igång med Docker.
För att slutföra den här självstudien behöver du en lokal Docker-utvecklingsmiljö som kör Linux-containrar. Docker tillhandahåller paket som konfigurerar Docker på ett Mac, Windows eller Linux system.
Kommentar
Azure Cloud Shell innehåller inte de Docker-komponenter som krävs för att slutföra varje steg i de här självstudierna. Därför rekommenderar vi att du använder en fullständig Docker-utvecklingsmiljö.
Hämta programkod
Exempelapplikationen sample som används i denna handledning är en grundläggande butiksfrontapplikation som inkluderar följande Kubernetes-utplaceringar och -tjänster:
- Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
- Produkttjänst: Visar produktinformation.
- Ordertjänst: Gör beställningar.
- Rabbit MQ: Meddelandekö för en orderköhantering.
Skapa en katalog på datorn och växla till katalogen i terminalsessionen, till exempel Bash. I det här exemplet används en katalog med namnet demorepo , men du kan använda valfritt namn.
mkdir demorepo cd demorepoAnvänd git för att klona exempelprogrammet till utvecklingsmiljön.
git clone https://github.com/Azure-Samples/aks-store-demo.gitÄndra till den klonade katalogen.
cd aks-store-demo
Granska Docker Compose-fil
Exempelprogrammet som du skapar i den här självstudien använder YAML-filen docker-compose-quickstart YAML från repository du klonade.
services:
rabbitmq:
image: rabbitmq:3.13.2-management-alpine
container_name: 'rabbitmq'
restart: always
environment:
- "RABBITMQ_DEFAULT_USER=username"
- "RABBITMQ_DEFAULT_PASS=password"
ports:
- 15672:15672
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
networks:
- backend_services
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- ORDER_QUEUE_HOSTNAME=rabbitmq
- ORDER_QUEUE_PORT=5672
- ORDER_QUEUE_USERNAME=username
- ORDER_QUEUE_PASSWORD=password
- ORDER_QUEUE_NAME=orders
- ORDER_QUEUE_RECONNECT_LIMIT=3
networks:
- backend_services
depends_on:
rabbitmq:
condition: service_healthy
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
Skapa containeravbildningar och kör program
Du kan använda Docker Compose för att automatisera skapandet av containeravbildningar och distributionen av program med flera containrar.
Docker
Skapa containeravbildningen, ladda ned RabbitMQ-avbildningen och starta programmet med kommandot
docker compose:docker compose -f docker-compose-quickstart.yml up -dVisa de skapade avbildningarna
docker imagesmed kommandot .docker imagesFöljande komprimerade exempelutdata visar de skapade bilderna:
REPOSITORY TAG IMAGE ID aks-store-demo-product-service latest 72f5cd7e6b84 aks-store-demo-order-service latest 54ad5de546f9 aks-store-demo-store-front latest 1125f85632ae ...Visa containrar som körs med kommandot
docker ps.docker psFöljande komprimerade exempelutdata visar fyra containrar som körs:
CONTAINER ID IMAGE f27fe74cfd0a aks-store-demo-product-service df1eaa137885 aks-store-demo-order-service b3ce9e496e96 aks-store-demo-store-front 31df28627ffa rabbitmq:3.13.2-management-alpine
Testa programmet lokalt
Om du vill se ditt program som körs navigerar du till http://localhost:8080 i en lokal webbläsare. Exempelprogrammet läses in, som du ser i följande exempel:
På den här sidan kan du visa produkter, lägga till dem i kundvagnen och sedan göra en beställning.
Rensa resurser
Eftersom du har verifierat programmets funktioner kan du stoppa och ta bort de containrar som körs. Ta inte bort containeravbildningarna eftersom du kommer att behöva dem i nästa handledning.
Stoppa och ta bort containerinstanserna och resurserna med kommandot docker-compose down .
docker compose down
Nästa steg
I den här självstudien skapade du ett exempelprogram, skapade containeravbildningar för programmet och testade sedan programmet. Du har lärt dig att:
- Klona en exempelprogramkälla från GitHub.
- Skapa en containeravbildning från exempelprogrammets källa.
- Testa programmet med flera containrar i en lokal Docker-miljö.
I nästa självstudie kommer du att lära dig hur du lagrar containerbilder i en ACR.