ECS 挂载卷到 nginx 容器

ECS mount volume to nginx container

我正在尝试设置 ECS 以便 运行 我的 php/nginx docker 应用程序。

它在本地使用此 docker-compose.yml 文件工作:

version: '2'
  services:

   nginx:
    image: NGINX-IMAGE
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - php
    environment:
        APP_SERVER_NAME: <ip>

   php:
    image: PHP-IMAGE
    ports:
        - 9000:9000
    volumes:
        - /var/www/html

问题是我无法使用 ECS 使它正常工作。 我不知道如何创建网络数据卷并让 nginx 使用 volumes_from.

抓取它

我正在尝试使用此 JSON:

创建卷
 volumes='[
   {
       "name": "webdata",
       "host": {
          "sourcePath": "/var/www/html"
       }
   }
 ]'

然后在 php 容器的容器定义中添加:

"mountPoints": 
 [
     {
       "sourceVolume": "webdata",
       "containerPath": "/var/www/html",
       "readOnly": false
     }
 ]

但是,当我这样做时,它会将主机的 /var/www/html 文件夹中的内容添加到容器的 /var/www/html 文件夹中。 我的问题是,如何配置卷以使用来自 php 的 /var/www/html 容器的数据并让 nginx 访问此数据?

我设法找到适合 ECS 设置的解决方案。 我只是在 php 引用 /var/www/html 的 Dockerfile 中创建了一个 VOLUME。

这意味着我不再需要引用 php 容器的 volumes 部分中的卷。而且 nginx 仍然可以访问 volumes_from.

的卷

更新

这是我对 ECS 的工作任务定义:

task_template='[
{
  "name": "nginx",
  "image": "NGINX_IMAGE",
  "essential": true,
  "cpu": 10,
  "memoryReservation": 1000,
  "portMappings": [
    {
      "containerPort": 80,
      "hostPort": 80
    }
  ],
  "environment" : [
      { "name" : "APP_SERVER_NAME", "value" : "%s" }
  ],
  "links": [
      "app"
  ],
  "volumesFrom": [
      { "sourceContainer": "app" }
  ]
},
{
  "name": "app",
  "image": "IMAGE",
  "essential": true,
  "cpu": 10,
  "memoryReservation": 1000,
  "portMappings": [
    {
      "containerPort": 9000,
      "hostPort": 9000
    }
  ]
}
]'

然后我将 VOLUME ["/var/www/html"] 添加到我的应用程序 Dockerfile。现在 nginx 可以使用任务定义中的 volumes_from 参数访问数据。