10

Tôi đang cố triển khai nhiều dịch vụ micro node.js trên AWS beanstalk, và tôi muốn chúng được triển khai trên cùng một cá thể. Đây là lần đầu tiên tôi triển khai nhiều dịch vụ, vì vậy có một số lỗi tôi cần một ai đó để giúp tôi. Vì vậy, tôi đã cố gắng để gói chúng trong một container docker đầu tiên. Trong khi đó tôi đang sử dụng nhà soạn nhạc docker để quản lý cấu trúc. Nó chạy và chạy cục bộ trong máy ảo của tôi, nhưng khi tôi triển khai nó trên cây đậu, tôi đã gặp một vài vấn đề.Triển khai docker trên AWS beanstalk với docker composer

Những gì tôi biết:

  1. Tôi biết tôi phải chọn để triển khai như Docker đa container.
  2. Cách tốt nhất để quản lý nhiều dịch vụ node.js là sử dụng trình soạn thảo docker.
  3. Tôi cần một dockerrun.aws.json cho ứng dụng node.js.
  4. Tôi cần tạo định nghĩa tác vụ cho cá thể ecs đó.

Nơi tôi có vấn đề:

  1. tôi chỉ có thể tìm thấy dockerrun.aws.jsontask_definition.json mẫu cho php, vì vậy tôi không thể xác minh nếu cấu hình của tôi cho Node.js trong hai file json là trong hình dạng chính xác.
  2. Có vẻ như docker-compose.yml, dockerrun.aws.jsontask_definition.json đang thực hiện các công việc tương tự. Tôi phải giữ nhiệm vụ định nghĩa, nhưng tôi vẫn cần dockerrun.aws.json?
  3. Tôi đã cố gắng chạy tác vụ trong ec, nhưng nó dừng lại ngay lập tức. Làm thế nào tôi có thể kiểm tra nhật ký cho công việc?

tôi nhận:

Không có định nghĩa ecs nhiệm vụ (hoặc tập tin định nghĩa trống) được tìm thấy trong môi trường

vì nhiệm vụ của tôi sẽ luôn luôn dừng lại ngay lập tức. Nếu tôi có thể kiểm tra nhật ký, nó sẽ dễ dàng hơn cho tôi khi chụp ảnh.

Đây là tôi 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

Có lẽ điều này sẽ giúp https://github.com/ingenieux/beanstalker/issues/63 – taco

+0

@taco, đây không phải là chính xác những gì tôi đang tìm kiếm, nhưng biết đâu tôi sẽ cũng đăng vấn đề của tôi trong bộ theo dõi vấn đề này, cảm ơn. –

+0

Và tôi không sử dụng beanstalker của họ –

Trả lời

3

Tôi đã có một vấn đề tương tự và nó bật ra rằng tôi lưu trữ thư mục chứa tập tin trực tiếp trong Archive.zip của tôi, do đó đem lại cho tôi cấu trúc này trong file Archive.zip :

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

Nó chỉ ra rằng bằng cách chỉ lưu trữ nội dung của RootFolder (và không phải thư mục), Amazon Beanstalk đã nhận dạng tệp Định nghĩa tác vụ ECS.

Hy vọng điều này sẽ hữu ích.

1

Vấn đề tương tự. Những gì cố định nó cho tôi đã được sử dụng các công cụ CLI thay vì nén bản thân mình, chỉ cần chạy eb deploy làm việc.

0

Đối với tôi, nó chỉ đơn giản là trường hợp đảm bảo tên của tệp khớp với vỏ chính xác như được mô tả trong AWS documentation.

dockerfile.aws.json phải được chính xác Dockerfile.aws.json

Các vấn đề liên quan