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