HOME

Fargate容器部署流程

引言

AWS Fargate 是一项无服务器容器托管服务,允许用户在无需配置和管理基础设施的情况下运行 Docker 容器。本文将详细介绍如何使用 AWS Fargate 部署一个简单的容器应用。

准备环境

  1. 创建Amazon Web Services (AWS) 账户:如果还没有 AWS 账号,请先注册并完成验证。
  2. 安装 AWS CLI:确保在本地机器上已安装最新版本的 AWS Command Line Interface(CLI)。
  3. 设置 AWS IAM 用户或角色:为了使用 Fargate,需要创建一个具有适当权限的角色或用户。

创建 ECR 镜像仓库

AWS Elastic Container Registry (ECR) 是一个完全托管式容器镜像注册表服务。我们将在此步骤中创建一个用于存放 Docker 镜像的 ECR 仓库。

aws ecr create-repository --repository-name my-fargate-app

构建并推送 Docker 镜像

  1. 构建 Docker 镜像:使用以下命令来构建本地的 Docker 镜像。假设你的应用代码位于 app 目录中。

    docker build -t my-fargate-app .
    
  2. 登录 ECR 仓库

    aws ecr get-login-password | docker login --username AWS --password-stdin <YOUR_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com
    
  3. 推送镜像到 ECR 仓库

    docker tag my-fargate-app:latest <YOUR_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/my-fargate-app:latest
    docker push <YOUR_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/my-fargate-app:latest
    

创建 Fargate 容器定义

容器定义文件(如 task-definition.json)是描述任务定义的 JSON 文件,其中包含服务所需的所有信息。以下是一个基本示例:

{
  "family": "my-fargate-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "web",
      "image": "<YOUR_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/my-fargate-app:latest",
      "memoryReservation": 300,
      "portMappings": [
        { "containerPort": 80, "hostPort": 80 }
      ],
      "essential": true
    }
  ]
}

使用 AWS CLI 部署容器任务

使用 AWS Command Line Interface (CLI) 创建 Fargate 任务定义并启动服务。

  1. 创建任务定义

    aws ecs register-task-definition --cli-input-json file://task-definition.json
    
  2. 启动服务并关联负载均衡器(可选):如果需要将容器暴露在公共网络中,可以使用 AWS Elastic Load Balancing (ELB)。

    aws ecs create-service --cluster my-cluster --task-definition my-fargate-task --desired-count 1 --load-balancer-attributes "[{\"Key\":\"elb-name\",\"Value\":\"my-load-balancer\"}]" --network-configuration "awsvpcConfiguration={subnets=[subnet-0123456789abcdef0],securityGroups=[sg-0123456789abcdef0]}"
    

监控与日志

使用 AWS CLI 或 AWS 管理控制台监控 Fargate 任务的运行状态,并查看容器的日志。

aws ecs list-tasks --cluster my-cluster --task-definition my-fargate-task

获取任务 ID 后,可以使用以下命令查看详细信息:

aws ecs describe-tasks --cluster my-cluster --tasks <TASK_ID>

通过 CloudWatch Logs 查看容器日志:

aws logs filter-log-events --log-group-name /ecs/my-fargate-task

结语

以上步骤展示了如何使用 AWS Fargate 部署一个简单的 Docker 容器应用。Fargate 提供了一种便捷的方式来运行容器,无需管理底层基础设施,大大简化了部署过程。