在 ECS Fargate 1.4.0 中将文件夹从一个容器共享到另一个容器

Share folder from one container to another within ECS Fargate 1.4.0

我有一个 Nginx 和一个 WordPress(php-fpm) 容器在平台 1.3.0 上的 ECS Fargate 任务 运行 中声明(或标记为最新的)。

我正在尝试切换到平台 1.4.0 以支持 EFS 卷。

我希望 Nginx 容器直接从 WordPress 容器提供静态资产。在 1.3.0 上,我只是在容器之间绑定卷,一切正常。 WP容器上/var/www/html的文件映射到Nginx容器上的/var/www/html/。

[
  {
    "name": "wordpress",
    "image": "....",
    ...
    "mountPoints": [
      {
        "readOnly": false,
        "sourceVolume": "asset-volume",
        "containerPath": "/var/www/html"
      }
    ]
  },
  {
    "name": "nginx",
    "image": "....",
    ...
    "mountPoints": [
      {
        "sourceVolume": "asset-volume",
        "containerPath": "/var/www/html",
        "readOnly": true
      }
    ]
  }
]
volume {
  name = "asset-volume"
  host_path = null
}

但是,在 1.4.0 上,它没有将文件夹从 WordPress 映射到 Nginx,而是在主机上创建了一个空卷并将其映射到两个容器上的 /var/www/html,从而删除了 [=12 的所有内容=] 在 WordPress 容器上。

最近几天我一直在研究这个问题;一种解决方案是将代码保存到 /var/www/code,然后在容器运行时将其复制到 /var/www/html,但这似乎是一个非常糟糕的解决方法。我想知道是否有人设法在 Fargate 1.4.0 上将数据从一个容器共享到另一个容器,以及他们是如何实现的。

谢谢

我有类似的问题。还在 Github 上找到了关于此主题的对话: https://github.com/aws/containers-roadmap/issues/863

tl;dr; 添加 VOLUME /var/www/html 到你的 wordpress dockerfile,删除 wordpress 容器定义 mountPoints 部分并在 nginx 容器定义中替换 mountPointsvolumesFrom.

像这样:

    "volumesFrom": [
      {
        "sourceContainer": "wordpress",
        "readOnly": true
      }
    ]

请在 GitHub 上关注此对话:

https://github.com/USACE/instrumentation/issues/88

确保 wordpress 和 nginx 的 dockerfile 都包含以下指令:

音量 [ "/var/www/html" ]