node.js - 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
?
解决方案
Fargate 是默认设置,无法告诉它您要部署在 EC2 上。然而,当 Fargate 无法提供所需的功能(例如 GPU)时,我们必须在 EC2 上进行部署。
如果你真的需要使用绑定挂载并且需要一个 EC2 实例,你可以使用这个技巧(我还没有这样做,所以我基本上在这里集思广益):
- 将您的任务配置为使用 GPU(请参见此处的示例)
- 使用转换您的作曲
docker compose convert
- 手动编辑 CFN 模板以使用不同的实例类型(以避免部署基于 GPU 的实例及其相关价格)
- 部署生成的 CFN 模板。
sed
如果你真的需要的话,你甚至可以用一些马戏团来自动化这个。
正如我所说,我没有尝试过,我不确定这有多可行。但我猜它不会太复杂。
推荐阅读
- google-apps-script - 如果用户删除了附加组件的权限,则停止可安装触发器
- android - Android Studio 主题编辑器不显示预览?
- scrapy - Scrapy:保存网站
- python-3.x - ImportError:PYTHON FLASK 中没有名为“flask_jwt_extended”的模块
- sparql - 如何使用 SPARQL 从 DBpedia 中提取数据
- hibernate - 不使用 GET 或 LOAD 获取单个域类对象
- r - 如何计算一行中的数值数量
- swift - 更改自定义 UITableViewCell 类中的项目
- ios - 如何增加特定部分中特定单元格的高度
- android - 我应该怎么做才能让我的应用程序运行更流畅?