首页 > 解决方案 > ECS Fargate 不支持绑定挂载

问题描述

我正在尝试将 nodejs docker-compose 应用程序部署到 aws ecs 中,这是我的 docker compose 文件的外观 -

version: '3.8'

services:
 sampleapp:
  image: jeetawt/njs-backend
  build:
   context: .
  ports:
   - 3000:3000
  environment:
   - SERVER_PORT=3000
   - CONNECTIONSTRING=mongodb://mongo:27017/isaac
  volumes:
   - ./:/app
  command: npm start

 mongo:
  image: mongo:4.2.8
  ports:
   - 27017:27017
  volumes:
   - mongodb:/data/db
   - mongodb_config:/data/configdb
volumes:
 mongodb:
 mongodb_config:

但是,当我在创建 ecs 上下文后尝试使用 docker compose up 运行它时,它会抛出以下错误 -

WARNING services.build: unsupported attribute        
ECS Fargate does not support bind mounts from host: incompatible attribute

我没有指定任何我想Fargate用于此的地方。有什么方法我仍然可以使用 ec2 而不是部署应用程序Fargate

标签: node.jsmongodbdockeramazon-ecsaws-fargate

解决方案


Fargate 是默认设置,无法告诉它您要部署在 EC2 上。然而,当 Fargate 无法提供所需的功能(例如 GPU)时,我们必须在 EC2 上进行部署。

如果你真的需要使用绑定挂载并且需要一个 EC2 实例,你可以使用这个技巧(我还没有这样做,所以我基本上在这里集思广益):

  • 将您的任务配置为使用 GPU(请参见此处的示例
  • 使用转换您的作曲docker compose convert
  • 手动编辑 CFN 模板以使用不同的实例类型(以避免部署基于 GPU 的实例及其相关价格)
  • 部署生成的 CFN 模板。

sed如果你真的需要的话,你甚至可以用一些马戏团来自动化这个。

正如我所说,我没有尝试过,我不确定这有多可行。但我猜它不会太复杂。


推荐阅读