ECS 挂载卷到 nginx 容器

Mat*_*und 2 php nginx amazon-ecs docker docker-compose

我正在尝试设置 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
Run Code Online (Sandbox Code Playgroud)

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

我正在尝试使用此 JSON 创建卷:

 volumes='[
   {
       "name": "webdata",
       "host": {
          "sourcePath": "/var/www/html"
       }
   }
 ]'
Run Code Online (Sandbox Code Playgroud)

然后在我对 php-container 的容器定义中添加:

"mountPoints": 
 [
     {
       "sourceVolume": "webdata",
       "containerPath": "/var/www/html",
       "readOnly": false
     }
 ]
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*und 5

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

这意味着我不再需要引用volumesphp 容器部分中的卷。并且 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
    }
  ]
}
]'
Run Code Online (Sandbox Code Playgroud)

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