Mat*_*und 2 php nginx amazon-ecs docker docker-compose
我正在尝试设置 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
Run Code Online (Sandbox Code Playgroud)
问题是我无法使用 ECS 使其正常工作。我不知道如何创建网络数据卷并让 nginx 使用volumes_from.
我正在尝试使用此 JSON 创建卷:
volumes='[
{
"name": "webdata",
"host": {
"sourcePath": "/var/www/html"
}
}
]'
Run Code Online (Sandbox Code Playgroud)
然后在我对 php-container 的容器定义中添加:
"mountPoints":
[
{
"sourceVolume": "webdata",
"containerPath": "/var/www/html",
"readOnly": false
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,它会将主机/var/www/html文件夹中的内容添加到/var/www/html容器文件夹中。我的问题是,如何配置卷以使用来自 php/var/www/html容器的数据并让 nginx 访问这些数据?
我设法找到了适合 ECS 设置的解决方案。我只是在我的 php Dockerfile 引用中创建了一个 VOLUME /var/www/html。
这意味着我不再需要引用volumesphp 容器部分中的卷。并且 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
}
]
}
]'
Run Code Online (Sandbox Code Playgroud)
然后我添加VOLUME ["/var/www/html"]到我的应用程序 Dockerfile。现在 nginx 可以使用volumes_from任务定义中的参数访问数据。
| 归档时间: |
|
| 查看次数: |
1286 次 |
| 最近记录: |