10

Я пытаюсь развернуть несколько микросервисов node.js на beanstalk AWS, и я хочу, чтобы они были развернуты в одном экземпляре. Это мой первый раз для развертывания нескольких сервисов, поэтому есть некоторые неудачи, которые мне нужны, чтобы кто-то помог мне. Итак, я попытался сначала упаковать их в контейнер для докеров. Тем временем я использую докер-композитор для управления структурой. Он работает и работает локально на моей виртуальной машине, но когда я развернул его на beanstalk, я встретил несколько проблем.Разверните докер на beanstalk AWS с помощью докер-композитора

То, что я знаю:

  1. Я знаю, что я должен выбрать для развертывания в нескольких контейнеров грузчиком.
  2. Лучшая практика управления несколькими службами node.js заключается в использовании докер-композитора.
  3. Мне нужно dockerrun.aws.json для приложения node.js.
  4. Мне нужно создать определение задачи для этого экземпляра ecs.

Где у меня есть проблемы:

  1. Я могу только найти dockerrun.aws.json и task_definition.json шаблон для PHP, так что я не могу проверить, если моя конфигурация для Node.js в этих двух JSon файлов в правильная форма.
  2. Похоже, docker-compose.yml, dockerrun.aws.json и task_definition.json выполняют аналогичные задания. Я должен держать task_definition, но мне все еще нужен dockerrun.aws.json?
  3. Я попытался запустить задачу в 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 (и не саму папку), Amazon Beanstalk признал определение файла ECS задач.

Надеюсь, это поможет.

1

Аналогичные проблемы. Для меня это было связано с использованием инструментов CLI вместо того, чтобы застегиваться, просто работая eb deploy.

0

Для меня это был просто случай, когда имя файла соответствовало точной оболочке, как описано в AWS documentation.

dockerfile.aws.json должен был быть точно Dockerfile.aws.json

 Смежные вопросы

  • Нет связанных вопросов^_^