我正在尝试将nodejs docker-compose应用程序部署到aws ecs中,以下是我的docker撰写文件的外观-
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来部署应用程序
发布于 2021-03-19 19:07:28
默认模式为Fargate。您可能没有在run命令中指定具有ec2实例的ecs集群。
您的docker compose有一个绑定挂载,因此您的任务需要部署到挂载可以工作的实例上。
此示例讨论如何部署到ec2支持的群集。https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cli-tutorial-ec2.html
发布于 2021-03-24 18:29:43
Fargate是默认的,没有办法告诉它您想要在EC2上部署。然而,在某些情况下,当Fargate无法提供所需的功能(例如GPU)时,我们必须部署在EC2上。
如果你真的需要使用绑定挂载,并且需要一个EC2实例,你可以使用这个技巧(我还没有这样做,所以我在这里基本上是头脑风暴):
将您的任务配置为使用GPU (see examples here)
docker compose convert
如果你真的需要的话,你甚至可以通过一些sed马戏团来实现自动化。
正如我所说,我没有尝试过,我不确定这是否可行。但我想这不会太复杂。
https://stackoverflow.com/questions/66695739
复制相似问题