如何在 AWS Batch 上使用 docker compose?

Posted

技术标签:

【中文标题】如何在 AWS Batch 上使用 docker compose?【英文标题】:How can I use docker compose on AWS Batch? 【发布时间】:2018-05-19 05:52:31 【问题描述】:

我有一个多容器(docker compose)应用程序。我想在 AWS Batch 上离线扩展它,以便在 S3 上处理大量数据。 我用于 docker compose 的 .yml 文件如下所示:

version: '2'

services:
    container1:
      container_name:
      image:
      ports:

    container2:
      container_name:
      image:
      depends_on: container1
      ports:

很遗憾,我在网上找不到任何处理此类案例的示例或教程。谁能帮我理解我应该如何解决这个问题?

【问题讨论】:

【参考方案1】:

日期:2018 年 11 月 6 日:

目前是不行的,如果是多容器的docker compose就不行。 docker-compose up 指令没有选项,只允许使用单个 docker 图像。定义如下:

"Properties" : 
    "Type" : "container",
    "Parameters" : 
      "net": "host"
    ,
    "ContainerProperties" : 
      "Command" : [ "command1" ],
      "Memory" : 2000,
      "Environment": [
          
            "Name" : "NAME",
            "Value" : "true"
          
      ],
      "Vcpus" : 2,
      "Image" : "redis:latest"
    ,
    "JobDefinitionName" : "job-1",
    "RetryStrategy" : 
        "Attempts" : 1
    

实际上在官方文档中将container指定为类型的唯一有效值:

https://docs.aws.amazon.com/batch/latest/userguide/job_definition_parameters.html#type

类型类型 注册作业定义时,指定类型 工作。目前,仅支持容器作业。

类型:字符串

有效值:容器

必填:是


对于单个容器,有一个 cli 工具可以将 docker-compose 转换为作业定义,但实际上,您可以手动执行此操作:

https://github.com/turnerlabs/compose-to-batch

【讨论】:

感谢您的回答。非常不幸的是,批处理不支持 docker-compose up... 他们强迫我们使用 docker 来提供这项服务,但是我们必须将环境变量传递给工作,无论如何 IMO 消除了 docker 的一个更好的功能(捆绑 .env 文件并致电docker-compose)

以上是关于如何在 AWS Batch 上使用 docker compose?的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Batch 上运行时,Redshift 频谱查询永远不会终止

尽管用户角色,AWS Batch 作业在 S3 上被拒绝访问

将弹性文件系统挂载到 AWS Batch Compute Environment

在apache或aws上使用docker部署反应构建

如何在 AWS CodeBuild 上运行 docker-compose?

如何从在 AWS ecs 上使用 docker 部署的应用程序获取日志