10

我試圖在AWS beanstalk上部署多個node.js微服務,並且我希望將它們部署在同一實例上。這是我第一次部署多種服務,所以有些失敗我需要某人幫助我。所以,我試圖首先將它們打包在碼頭集裝箱中。同時,我正在使用碼頭作曲家來管理結構。它在本地虛擬機中啓動並運行,但是當我將它部署到beanstalk時,遇到了一些問題。使用docker composer在AWS beanstalk上部署docker

我所知道的:

  1. 我知道我必須選擇部署的多集裝箱碼頭工人。
  2. 管理多個node.js服務的最佳實踐是使用docker composer。
  3. 我需要一個dockerrun.aws.json node.js應用程序。
  4. 我需要爲該ecs實例創建任務定義。

哪裏有問題:

  1. 我只能找到PHP dockerrun.aws.jsontask_definition.json 模板,所以我無法驗證,如果我在這兩個JSON文件的node.js 配置在正確的形狀。
  2. 看起來好像docker-compose.ymldockerrun.aws.jsontask_definition.json正在做類似的工作。我必須保留 task_definition,但是我還需要dockerrun.aws.json嗎?
  3. 我試圖在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" 
} 
+0

也許這將幫助https://github.com/ingenieux/beanstalker/issues/63 – taco

+0

@taco,這不正是我要找的,但我可能以及在此問題跟蹤器中發佈我的問題,謝謝。 –

+0

而我沒有使用他們的beanstalker –

回答

3

我有一個類似的問題,原來,我直接在我的Archive.zip文件存檔包含文件夾,從而使我在Archive.zip文件這種結構:

RootFolder 
    - Dockerrun.aws.json 
    - Other files... 

原來,通過歸檔只有RootFolder的內容(而不是文件夾本身),亞馬遜魔豆承認ECS任務定義文件。

希望這會有所幫助。

1

類似的問題。對我來說固定的是使用CLI工具,而不是自己壓縮,只是運行eb deploy工作。

0

對我來說,這只是一個確保文件名與AWS documentation中描述的確切外殼相匹配的例子。

dockerfile.aws.json必須是完全Dockerfile.aws.json