node.jsコンテナをECS上で実行し続けるのは苦労しています。ドッカーの作成でローカルに実行するとうまく動作しますが、ECSでは2-3分間実行され、いくつかの接続(ロードバランサからの2〜3回のヘルスチェック)が処理されて閉じます。そして、なぜ私はうまくいかない。私のCloudWatchので終了することなくAWS ECSでノードコンテナを実行するには
node:
...
command: nodemon
-
マイDockerfile - 私のpackage.jsonで次に
FROM node:6.10
RUN npm install -g nodemon \
&& npm install forever-monitor \
winston \
express-winston
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD [ "npm", "start" ]
-
{
...
"main": "forever.js",
"dependencies": {
"mongodb": "~2.0",
"abbajs": ">=0.1.4",
"express": ">=4.15.2"
}
...
}
私はnodemonで実行私のドッキングウィンドウ-compose.ymlでログはすべてが始まると見ることができます -
14:20:24 npm info lifecycle [email protected]~start: [email protected]
は、それから私は、その後、少し後でそれがすべてアップラップ(HTTP 200の持つすべての)ヘルスチェック要求を参照してください - 私はforever-monitorで私start.jsスクリプトをラップ
14:23:00 npm info lifecycle [email protected]~poststart: [email protected]
14:23:00 npm info ok
を試してみたが、それ何の違いもないようです。
UPDATE
マイECSのタスク定義は -
{
"requiresAttributes": [
{
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth",
"targetId": null,
"targetType": null
},
{
"value": null,
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs",
"targetId": null,
"targetType": null
},
{
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19",
"targetId": null,
"targetType": null
}
],
"taskDefinitionArn": "arn:aws:ecs:us-east-1:562155596068:task-definition/node:12",
"networkMode": "bridge",
"status": "ACTIVE",
"revision": 12,
"taskRoleArn": null,
"containerDefinitions": [
{
"volumesFrom": [],
"memory": 128,
"extraHosts": null,
"dnsServers": null,
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [
{
"hostPort": 0,
"containerPort": 3000,
"protocol": "tcp"
}
],
"hostname": null,
"essential": true,
"entryPoint": null,
"mountPoints": [],
"name": "node",
"ulimits": null,
"dockerSecurityOptions": null,
"environment": [
{
"name": "awslogs-group",
"value": "node_logs"
},
{
"name": "awslogs-region",
"value": "us-east-1"
},
{
"name": "NODE_ENV",
"value": "production"
}
],
"links": null,
"workingDirectory": null,
"readonlyRootFilesystem": null,
"image": "562155596068.dkr.ecr.us-east-1.amazonaws.com/node:06b5a3700df163c8563865c2f23947c2685edd7b",
"command": null,
"user": null,
"dockerLabels": null,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "node_logs",
"awslogs-region": "us-east-1"
}
},
"cpu": 1,
"privileged": null,
"memoryReservation": null
}
],
"placementConstraints": [],
"volumes": [],
"family": "node"
}
タスクはすべてのステータスTask failed ELB health checks in (target-group ...
で停止されています。健康チェックは、失敗を開始する前に2〜3回通過します。ログにhttp 200以外のものは記録されていません。
ECSタスク設定とまったく同じコマンドでローカルで実行しようとしましたか? –
ありがとう@PaulBecotte - はい、私は今、それを試しました。問題なく5分間稼働しています。 –
ECSタスク定義を共有できますか? –