Я пытаюсь настроить ECS для запуска моего докера php / nginx.
Он работает локально, используя этот файл 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.
Я просто создал VOLUME в моей php Dockerfile, ссылаясь /var/www/html
,
Это означает, что мне больше не нужно ссылаться на объем в volumes
раздел php контейнера. И 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
аргумент в определении задачи.
Других решений пока нет …