2017-06-20 12 views
0

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以外のものは記録されていません。

+0

ECSタスク設定とまったく同じコマンドでローカルで実行しようとしましたか? –

+0

ありがとう@PaulBecotte - はい、私は今、それを試しました。問題なく5分間稼働しています。 –

+0

ECSタスク定義を共有できますか? –

答えて

0

旧バージョンのmongoドライバ~2.0を使用していましたが、複数のデータベースに接続していました。私がドライバをアップグレードしたとき、問題は消えました。

"dependencies": { 
    "mongodb": ">=2.2" 
    } 

私は、ドライバにバグがあったと仮定できます。

関連する問題