共用方式為


教學課程 – 準備 Azure Kubernetes Service (AKS) 的應用程式

在本教學課程中,您會準備多容器應用程式,以在 Kubernetes 中使用。 您可以使用 Docker Compose 等現有開發工具,在本機組建及測試應用程式。 您將學習如何:

  • 從 GitHub 複製範例應用程式來源。
  • 從範例應用程式來源建立容器映像。
  • 在本機 Docker 環境中測試多容器應用程式。

完成後,就可在本機開發環境中執行下列應用程式:

顯示在本機網頁瀏覽器中開啟並於本機執行的 Azure Store Front 應用程式的螢幕擷取畫面。

在稍後的教學課程中,您會將容器映像上傳至 Azure Container Registry (ACR),然後將它部署到 AKS 叢集。

開始之前

本教學課程假設使用者對核心 Docker 概念有基本認識,例如容器、容器映像和 docker 命令。 如需容器基本概念的入門參考資料,請參閱開始使用 Docker

若要完成此教學課程,您需要一個執行 Linux 容器的本機 Docker 開發環境。 Docker 提供可在 MacWindowsLinux 系統上設定 Docker 的套件。

注意

Azure Cloud Shell 不含完成這些教學課程中各個步驟所需的 Docker 元件。 因此,我們建議使用完整的 Docker 開發環境。


取得應用程式程式碼

本教學課程中使用的範例應用程式是基本的存放區前端應用程式,包括下列 Kubernetes 部署和服務:

Azure 市集範例結構的螢幕擷取畫面。

  • 市集前端:供客戶檢視產品和下單的 Web 應用程式。
  • 產品服務:顯示產品資訊。
  • 訂單服務:下單。
  • Rabbit MQ:訂單佇列的訊息佇列。
  1. 使用 git 將應用程式的範例複製到您的開發環境。

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. 變更為複製的目錄。

    cd aks-store-demo
    

檢閱 Docker Compose 檔案

您在本教學課程中建立的範例應用程式會使用您複製的存放庫中的 docker-compose-quickstart YAML 檔案

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

建立容器映像並執行應用程式

您可以使用 Docker Compose,將容器映像和多容器應用程式的部署自動化。

Docker

  1. 建立容器映像、下載 RabbitMQ 映像,並使用 docker compose 命令啟動應用程式:

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. 使用 docker images 命令檢視已建立的映像。

    docker images
    

    下列壓縮範例輸出會顯示已建立的映像:

    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
    rabbitmq                          3.13.2-management-alpine     b1dafc50c098
    ...
    
  3. 使用 docker ps 命令檢視執行中的容器。

    docker ps
    

    下列壓縮範例輸出顯示四個執行中的容器:

    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
    

在本機測試應用程式

若要查看執行中的應用程式,請流覽至本機網頁瀏覽器中的 http://localhost:8080。 系統會載入範例應用程式,如下列範例所示:

顯示在本機瀏覽器中開啟的 Azure Store Front 應用程式的螢幕擷取畫面。

在此頁面上,您可以檢視產品、將其新增至購物車,然後下訂單。

清除資源

由於您已驗證應用程式的功能,因此您可以停止並移除執行中的容器。 請勿刪除容器映像 – 您會在下一個教學課程中使用它們。

  • 使用 docker-compose down 命令停止並移除容器執行個體和資源。

    docker compose down
    

下一步

在本教學課程中,您已建立應用程式範例、建立應用程式的容器映像,然後測試應用程式。 您已了解如何︰

  • 從 GitHub 複製範例應用程式來源。
  • 從範例應用程式來源建立容器映像。
  • 在本機 Docker 環境中測試多容器應用程式。

在下一個教學課程中,您將瞭解如何將容器映像儲存在 ACR 中。