我正在尝试设置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-container中我添加:
"mountPoints":
[
{
"sourceVolume": "webdata",
"containerPath": "/var/www/html",
"readOnly": false
}
]
但是,当我这样做时,它会将主机的/var/www/html
文件夹中的内容添加到容器的/var/www/html
文件夹中。
我的问题是,如何配置卷以使用php的/var/www/html
容器中的数据并让nginx访问这些数据?
答案 0 :(得分:3)
我设法找到适合ECS设置的解决方案。
我只是在引用/var/www/html
的php 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
参数访问数据。