ECS将卷挂载到nginx容器

3

我正在尝试设置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中使其正常工作。 我不知道如何创建Web数据卷并使用volumes_from让nginx获取它。

我正在尝试使用以下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访问这些数据?

你需要为两个容器定义相同的挂载点。volume_from已被弃用,不应使用。 - Tarun Lalwani
1个回答

6
我找到了适用于ECS设置的解决方案。 我只需在我的php Dockerfile中创建一个/var/www/html的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
    }
  ]
}
]'

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


你能发布一个可行的示例和操作步骤吗?我无法弄清楚... - victor zadorozhnyy
@user3315525,这是你需要的内容,请告诉我是否有效。 - Mathias Lund
请帮忙看一下我的问题,谢谢。我的问题链接 我在将卷挂载到正确的位置时遇到了问题,同时我也需要帮助理解相同镜像概念...非常感谢任何帮助。 - victor zadorozhnyy
谢谢。这些配置在ECS Fargate上不起作用。当networkMode=awsvpc时,链接不受支持,而这是Fargate目前唯一的网络模式。 - Fariman Kashani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接