Общий доступ к папке из одного контейнера в другой в ECS Fargate 1.4.0

#aws-fargate

#aws-fargate

Вопрос:

У меня есть один контейнер Nginx и один контейнер WordPress (php-fpm), объявленный в задаче ECS Fargate, запущенной на платформе 1.3.0 (или то, что помечено как ПОСЛЕДНЕЕ).

Я пытаюсь переключиться на платформу 1.4.0 для поддержки томов EFS.

Я хочу, чтобы контейнер Nginx обслуживал статические ресурсы непосредственно из контейнера WordPress. В версии 1.3.0 я просто связываю тома между контейнерами, и все работает. Файлы из /var/www/html контейнера WP сопоставлены с контейнером `/var/www/ html/ on Nginx.

 [
  {
    "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 с обоими контейнерами, удаляя таким образом все содержимое /var/www/html контейнера WordPress.

Я изучал эту проблему в течение последних нескольких дней; одно из решений — сохранить код /var/www/code , а затем скопировать его /var/www/html в среду выполнения контейнера, но это кажется очень плохим решением. Интересно, удалось ли кому-нибудь поделиться данными из одного контейнера в другой в Fargate 1.4.0 и как они этого добились.

Спасибо

Ответ №1:

У меня была аналогичная проблема. Также нашел разговор на эту тему на Github: https://github.com/aws/containers-roadmap/issues/863

tl; dr; Добавьте VOLUME /var/www/html к себе wordpress dockerfile, удалите раздел определения контейнера wordpress mountPoints и в определении контейнера nginx замените mountPoints на volumesFrom .

вот так:

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

Ответ №2:

пожалуйста, следите за этим разговором на GitHub:

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

Убедитесь, что dockerfiles для wordpress и nginx содержат следующую директиву:

ОБЪЕМ [ «/var/www/ html» ]