教學課程 – 準備 Azure Kubernetes Service (AKS) 的應用程式
在本教學課程中,您會準備多容器應用程式,以在 Kubernetes 中使用。 您可以使用 Docker Compose 等現有開發工具,在本機組建及測試應用程式。 您將學習如何:
- 從 GitHub 複製範例應用程式來源。
- 從範例應用程式來源建立容器映像。
- 在本機 Docker 環境中測試多容器應用程式。
完成後,就可在本機開發環境中執行下列應用程式:
在稍後的教學課程中,您會將容器映像上傳至 Azure Container Registry (ACR),然後將它部署到 AKS 叢集。
開始之前
本教學課程假設使用者對核心 Docker 概念有基本認識,例如容器、容器映像和 docker
命令。 如需容器基本概念的入門參考資料,請參閱開始使用 Docker。
若要完成此教學課程,您需要一個執行 Linux 容器的本機 Docker 開發環境。 Docker 提供可在 Mac、Windows 或 Linux 系統上設定 Docker 的套件。
注意
Azure Cloud Shell 不含完成這些教學課程中各個步驟所需的 Docker 元件。 因此,我們建議使用完整的 Docker 開發環境。
取得應用程式程式碼
本教學課程中使用的範例應用程式是基本的存放區前端應用程式,包括下列 Kubernetes 部署和服務:
- 市集前端:供客戶檢視產品和下單的 Web 應用程式。
- 產品服務:顯示產品資訊。
- 訂單服務:下單。
- Rabbit MQ:訂單佇列的訊息佇列。
使用 git 將應用程式的範例複製到您的開發環境。
git clone https://github.com/Azure-Samples/aks-store-demo.git
變更為複製的目錄。
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
建立容器映像、下載 RabbitMQ 映像,並使用
docker compose
命令啟動應用程式:docker compose -f docker-compose-quickstart.yml up -d
使用
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 ...
使用
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
。 系統會載入範例應用程式,如下列範例所示:
在此頁面上,您可以檢視產品、將其新增至購物車,然後下訂單。
清除資源
由於您已驗證應用程式的功能,因此您可以停止並移除執行中的容器。 請勿刪除容器映像 – 您會在下一個教學課程中使用它們。
使用
docker-compose down
命令停止並移除容器執行個體和資源。docker compose down
下一步
在本教學課程中,您已建立應用程式範例、建立應用程式的容器映像,然後測試應用程式。 您已了解如何︰
- 從 GitHub 複製範例應用程式來源。
- 從範例應用程式來源建立容器映像。
- 在本機 Docker 環境中測試多容器應用程式。
在下一個教學課程中,您將瞭解如何將容器映像儲存在 ACR 中。