2016-05-23 175 views
0

我在Elastic Beanstalk上部署Docker应用程序。它有效,但需要永久(30分钟直到它恢复到“绿色”状态)。在我的开发环境中,它在几秒钟内完成。 ssh方式连接到生产实例和拖尾日志(/var/log/eb-activity.log),我看到它挂在标有星号线以下(运行03build.sh):超慢速弹性Beanstalk Docker部署

[2016-05-23T13:10:00.430Z] INFO [3199] - [Application deployment [email protected]/StartupStage0/AppDeployPreHook/02loopback-check.sh] : Starting activity... 
[2016-05-23T13:10:07.845Z] INFO [3199] - [Application deployment [email protected]/StartupStage0/AppDeployPreHook/02loopback-check.sh] : Completed activity. 
*****[2016-05-23T13:10:07.845Z] INFO [3199] - [Application deployment [email protected]/StartupStage0/AppDeployPreHook/03build.sh] : Starting activity... 
[2016-05-23T13:31:58.805Z] INFO [3199] - [Application deployment [email protected]/StartupStage0/AppDeployPreHook/03build.sh] : Completed activity. Result: 
    latest: Pulling from srfoster/my-repo 
    6714a7dc486b: Pulling fs layer 
    5866500c2af9: Pulling fs layer 
    ... ETC ... 

基于对一个的(不接受)回答这个类似的问题...

Why are Docker build commands running so slow in Elastic Beanstalk?

我跑

docker info | grep Storage 

和回来

devicemapper 

据推测,aufs比devicemapper快(根据上面链接的问题)。

Buuuut,即使这是真的,我也不知道如何让Beanstalk的预建图像在旋转时使用一个和另一个。

对此有何建议?或者还有其他方法可以解决缓慢部署问题吗?

+0

有几个问题:您是否使用已经构建的Docker镜像进行部署?什么注册管理机构使用这个 - ECR或其他什么?您运行的服务有多少个实例? – sap1ens

+0

它尚未建成。它使用了一个基础镜像,然而,它从dockerhub上的一个私有仓库中提取。我看到一个EB实例的缓慢。 –

回答

1

好吧,我尝试使用完全构建的docker镜像进行部署,以最大限度地减少部署期间必须在实例上完成的工作量。我可以确认这会将部署时间缩短到3分钟左右。

注意,(因为这是一个Rails应用程序),我也只好烤不只是应用程序代码,但还之类的东西

bundle install 

而且

rake assets:precompile 

我就把这一切的结果到一个图像中,并将完全烘焙的图像部署到(在我的情况下)Dockerhub。我部署到Amazon与

eb deploy 

基本上只是这Dockerfile:

FROM srfoster/my-fully-built-docker-image:latest 
EXPOSE 80 
ENTRYPOINT /path/to/foreman start -f AWSProcfile 

和准系统Dockerrun.aws.json

{ 
    "AWSEBDockerrunVersion": "1", 
    "Authentication": { 
     "Bucket": "my-credentials-bucket", 
     "Key": "path/to/my/dockercfg" 
    }, 
    "Ports": [ 
    { 
     "ContainerPort": "80" 
    } 
    ], 
    "Logging": "/var/log/nginx" 
} 

有绝对没有别的部署目录。无应用程序代码。快速部署。我很高兴。