ECS 挂载卷到 nginx 容器
Posted
技术标签:
【中文标题】ECS 挂载卷到 nginx 容器【英文标题】:ECS mount volume to nginx container 【发布时间】:2018-04-18 04:08:21 【问题描述】:我正在尝试设置 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-data 卷并让 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 访问这些数据?
【问题讨论】:
您需要为两个容器定义相同的挂载点。volume_from
已弃用,不应使用
【参考方案1】:
我设法找到了适合 ECS 设置的解决方案。
我只是在我的 php Dockerfile 中创建了一个 VOLUME,引用 /var/www/html
。
这意味着我不再需要引用 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
参数访问数据了。
【讨论】:
你能发布工作示例和步骤吗?想不通... @user3315525 给你,让我知道它是否适合你。 你能看看我的问题吗请My question我在将卷安装到正确的位置时遇到问题,而且我需要帮助将图像与相同的图像概念相一致...任何帮助赞赏 谢谢。这些配置不适用于 ECS Fargate。当 networkMode=awsvpc 时不支持链接,这是 Fargate 现在唯一的网络模式。以上是关于ECS 挂载卷到 nginx 容器的主要内容,如果未能解决你的问题,请参考以下文章
Docker 基本操作 数据卷 -- docker 数据卷基本操作挂载数据卷