【发布时间】:2016-10-14 03:58:15
【问题描述】:
我正在尝试在 AWS beanstalk 上部署多个 node.js 微服务,我希望它们部署在同一个实例上。这是我第一次部署多个服务,所以有一些失败我需要有人帮助我。因此,我尝试先将它们打包在 docker 容器中。同时我正在使用 docker composer 来管理结构。它在我的虚拟机中本地启动并运行,但是当我将它部署到 beanstalk 时,我遇到了一些问题。
我知道的:
- 我知道我必须选择部署为多容器 docker。
- 管理多个 node.js 服务的最佳实践是使用 docker composer。
- 我需要一个
dockerrun.aws.json用于 node.js 应用程序。 - 我需要为该 ecs 实例创建任务定义。
我有问题的地方:
- 我只能找到
dockerrun.aws.json和task_definition.jsonphp的模板,所以我无法验证我的node.js配置是否 这两个 json 文件的形状正确。 - 似乎
docker-compose.yml、dockerrun.aws.json和task_definition.json正在做类似的工作。我必须保持 task_definition,但我还需要 dockerrun.aws.json 吗? - 我尝试在 ecs 中运行该任务,但它立即停止。如何查看任务日志?
我明白了:
在环境中找不到 ecs 任务定义(或空定义文件)
因为我的任务总是会立即停止。如果我可以查看日志,我将更容易进行故障排除。
这是我的task_definition.json:
{
"requiresAttributes": [],
"taskDefinitionArn": "arn:aws:ecs:us-east-1:231440562752:task-definition/ComposerExample:1",
"status": "ACTIVE",
"revision": 1,
"containerDefinitions": [
{
"volumesFrom": [],
"memory": 100,
"extraHosts": null,
"dnsServers": null,
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80,
"protocol": "tcp"
}
],
"hostname": null,
"essential": true,
"entryPoint": null,
"mountPoints": [
{
"containerPath": "/usr/share/nginx/html",
"sourceVolume": "webdata",
"readOnly": true
}
],
"name": "nginxexpressredisnodemon_nginx_1",
"ulimits": null,
"dockerSecurityOptions": null,
"environment": [],
"links": null,
"workingDirectory": null,
"readonlyRootFilesystem": null,
"image": "nginxexpressredisnodemon_nginx",
"command": null,
"user": null,
"dockerLabels": null,
"logConfiguration": null,
"cpu": 99,
"privileged": null
}
],
"volumes": [
{
"host": {
"sourcePath": "/ecs/webdata"
},
"name": "webdata"
}
],
"family": "ComposerExample"
}
【问题讨论】:
-
@taco,这不是我要找的,但我不妨在这个问题跟踪器中发布我的问题,谢谢。
-
我没有使用他们的beanstalker
-
这似乎是一个类似的问题,但足以被认为是正确的答案。不幸的是,我对 AWS 帮助不大。
-
是的,它们是相当新的技术,我还有什么想法可以让这个问题更通用,以便更多人可以查看?
标签: amazon-web-services docker amazon-elastic-beanstalk docker-compose amazon-ecs