多容器beanstalk部署与预构build图像只

我有一个CI系统已经安装,build立并推动docker图像到ECR。 在Dockerrun.aws.json文件中,我使用这些图像(链接)来运行多docker容器beanstalk环境。

示例Dockerrun.aws.json

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "web-app", "host": { "sourcePath": "/var/app/current/web-app" } }, { "name": "api-service", "host": { "sourcePath": "/var/app/current/api-service" } } ], "containerDefinitions": [ { "name": "api-service", "image": "somekey.dkr.ecr.us-west-2.amazonaws.com/api-service", "essential": true, "memory": 800, "privileged": true, "portMappings": [ { "hostPort": 8080, "containerPort": 80 } ], "command": [ "/bin/bash", "/root/api-service/before_run.sh" ], "mountPoints": [ { "sourceVolume": "api-service", "containerPath": "/root/api-service" } ] }, { "name": "web-app", "image": "somekey.dkr.ecr.us-west-2.amazonaws.com/web-app", "essential": true, "memory": 800, "environment": [ { "name": "ENVIRONMENT", "value": "staging" } ], "command": [ "/bin/bash", "/root/web-app/before_run.sh" ], "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "mountPoints": [ { "sourceVolume": "web-app", "containerPath": "/root/web-app" } ] } ] } 

问题是豆茎不使用这些图像。 而是使用驻留在/ var / current / app / api-service文件夹中的代码。 所以,如果我只是上传Dockerrun.aws.json文件,它会失败,没有文件或目录,因为/ var / current / app / api-service中没有文件。 同样,如果我添加文件夹的API服务与Dockerrun.aws.json,然后部署。 有用。

这个想法是简单地从ECR中拖出那些docker镜像,然后运行它们,而不需要在容器中部署额外的源代码。

PS:我已经添加ECR访问eb实例configuration文件。 而且我可以看到图像被正确拉出。 即使我可以在远程实例上没有任何问题手动运行它们。

我设法通过使用以下方法来工作。

从Dockerrun.aws.json中移除挂载点,让docker使用自己的工作区。

所以,这里是新的Dockerrun.aws.json

 { "AWSEBDockerrunVersion": 2, "containerDefinitions": [ { "name": "api-service", "image": "somekey.dkr.ecr.us-west-2.amazonaws.com/api-service", "essential": true, "memory": 800, "privileged": true, "portMappings": [ { "hostPort": 8080, "containerPort": 80 } ], "command": [ "/bin/bash", "/root/api-service/before_run.sh" ] }, { "name": "web-app", "image": "somekey.dkr.ecr.us-west-2.amazonaws.com/web-app", "essential": true, "memory": 800, "environment": [ { "name": "ENVIRONMENT", "value": "staging" } ], "command": [ "/bin/bash", "/root/web-app/before_run.sh" ], "portMappings": [ { "hostPort": 80, "containerPort": 80 } ] } ] }