文章

創建並部署容器化應用

創建並部署容器化應用

以下是創建並部署容器化應用的步驟,以 Amazon ECS 為例,展示如何從構建 Docker 映像到在 ECS 上部署應用。

1. 準備 Docker 環境

  • 安裝 Docker
  • 編寫 Dockerfile
    • Dockerfile 是描述如何構建 Docker 映像的腳本。以下是一個簡單的 Node.js 應用 Dockerfile 範例:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      # 使用官方 Node.js 映像作為基礎
      FROM node:14
      
      # 設置工作目錄
      WORKDIR /usr/src/app
      
      # 複製 package.json 和 package-lock.json
      COPY package*.json ./
      
      # 安裝應用依賴
      RUN npm install
      
      # 複製應用代碼
      COPY . .
      
      # 暴露應用端口
      EXPOSE 8080
      
      # 定義啟動命令
      CMD [ "node", "app.js" ]
      
  • 構建 Docker 映像
    • 使用以下命令構建 Docker 映像:

      1
      
      docker build -t my-node-app .
      
  • 測試 Docker 映像
    • 在本地運行 Docker 容器,確保應用正常工作:

      1
      
      docker run -p 8080:8080 my-node-app
      

2. 將 Docker 映像推送到容器註冊表

  • 創建 Amazon ECR 存儲庫
    • 使用 AWS 管理控制台或 CLI 創建一個 Amazon ECR 存儲庫。AWS ECR 是一個完全托管的容器映像註冊表服務。

      1
      
      aws ecr create-repository --repository-name my-node-app
      
  • 登錄到 ECR
    • 使用 Docker CLI 登錄到 Amazon ECR:

      1
      
      $(aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com)
      
  • 標記並推送 Docker 映像
    • 標記 Docker 映像並推送到 ECR 存儲庫:

      1
      2
      
      docker tag my-node-app:latest <account-id>.dkr.ecr.<region>.amazonaws.com/my-node-app:latest
      docker push <account-id>.dkr.ecr.<region>.amazonaws.com/my-node-app:latest
      

3. 創建 ECS 任務定義

  • 編寫任務定義
    • 在 AWS 管理控制台中,導航到 ECS 服務,創建新的任務定義。填寫所需的設定,包括容器映像 URI、端口映射和資源需求等。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      {
        "family": "my-node-app-task",
        "containerDefinitions": [
          {
            "name": "my-node-app",
            "image": "<account-id>.dkr.ecr.<region>.amazonaws.com/my-node-app:latest",
            "memory": 512,
            "cpu": 256,
            "essential": true,
            "portMappings": [
              {
                "containerPort": 8080,
                "hostPort": 8080
              }
            ]
          }
        ]
      }
      

4. 創建並部署 ECS 服務

  • 創建 ECS 集群
    • 在 AWS 管理控制台中,創建一個新的 ECS 集群。您可以選擇 EC2 模式或 Fargate 模式,這取決於您的需求。
  • 創建 ECS 服務
    • 在 ECS 集群中創建一個新的服務,指定使用之前創建的任務定義,並設置所需的任務數量、負載均衡器(如果需要)等配置。

      1
      
      aws ecs create-service --cluster my-cluster --service-name my-node-app-service --task-definition my-node-app-task --desired-count 2
      
  • 配置負載均衡器(可選)
    • 如果需要,您可以創建和配置負載均衡器,以便在多個容器實例之間分配流量。

5. 驗證和監控

  • 檢查應用狀態
    • 在 AWS ECS 控制台中檢查服務和任務的狀態,確保應用正確運行。
  • 查看日誌
    • 使用 Amazon CloudWatch 查看應用日誌,監控應用的運行狀態和性能。
  • 測試應用
    • 通過負載均衡器或直接訪問服務的 IP 地址來測試應用,確保它按照預期運行。

總結

這些步驟展示了如何從構建 Docker 映像開始,到將映像推送到 Amazon ECR,再到創建和部署容器化應用於 Amazon ECS 的過程。通過使用 Docker 和 ECS,您可以實現應用的高效管理和擴展,並利用 AWS 的全套服務來支持您的容器化應用程式。

本文章以 CC BY 4.0 授權