【问题标题】:Error Running MongoDB via Docker Compose on ECS Fargate在 ECS Fargate 上通过 Docker Compose 运行 MongoDB 时出错
【发布时间】:2021-12-29 22:00:46
【问题描述】:

我一直在尝试使用 docker-compose 在带有 Fargate 的 ECS 上启动一个容器化的 mongoDB 实例,这是我的 docker compose 配置:

mongo:
 image: mongo:latest
 restart: always
 environment:
  MONGO_INITDB_USERNAME: root
  MONGO_INITDB_DATABASE: db-name
 volumes:
  - ./migration/init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
 ports:
  - "27017:27017"

使用 docker compose 版本:3

我收到以下错误:FATA[0000] ClientException: Fargate 兼容任务定义不支持 sourcePath

关于我做错了什么有什么想法吗?

【问题讨论】:

  • sourcePathFARGATE 模式下不受支持,因为这需要访问主机实例。看看这个post
  • 我明白了,只是为了完全澄清这一点,在我的定义中我在哪里使用sourcePath?是在我定义volumes 的使用时吗?我根据链接的帖子猜测,我的解决方案就是不定义volumes

标签: mongodb docker docker-compose amazon-ecs aws-fargate


【解决方案1】:

您无法将本地文件/文件夹 (.migration/init.js) 挂载到云中的任务。我不熟悉 Mongo,所以我不能 100% 确定该文件的作用,但解决此问题的最简单方法是从 mongo 创建一个新的 docker 映像,其中唯一的行是 ADD 以添加 init.js在容器内需要它的文件(/docker-entrypoint-initdb.d/mongo-init.js?)。解决这个问题的“更简单”的方法是消除 compose 中的 volume 指令(但我不知道这样做会对您需要运行的 mongo 容器产生什么影响)。

【讨论】: