如何在Elastic Beanstalk上部署定制的Docker镜像?

看这个博客 – 5.创buildDockerfile 。 看来我不得不在Docker.io上创build一个指向我的私有镜像的新Dockerfile。

而且由于最后的命令应该是启动一个可执行文件,或者docker映像最终会在涅,,最后是监视器:

FROM flux7/wp-site # This is the location of our docker container. RUN apt-get install supervisor RUN mkdir -p /var/log/supervisor ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf EXPOSE 80 CMD supervisord -c /etc/supervisor/conf.d/supervisord.conf 

这对我来说有点困惑,因为我有一个完全testing的自定义Docker镜像,以supervisord结尾,如下所示:

 FROM ubuntu:14.04.2 RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get -y update && apt-get upgrade -y RUN apt-get install supervisor python build-essential python-dev python-pip python-setuptools -y RUN apt-get install libxml2-dev libxslt1-dev python-dev -y RUN apt-get install libpq-dev postgresql-common postgresql-client -y RUN apt-get install openssl openssl-blacklist openssl-blacklist-extra -y RUN apt-get install nginx -y RUN pip install "pip>=7.0" RUN pip install virtualenv uwsgi RUN mkdir -p /var/log/supervisor ADD canonicaliser_api /home/ubuntu/canonicaliser_api ADD config_local.py /home/ubuntu/canonicaliser_api/config/config_local.py RUN virtualenv /home/ubuntu/canonicaliser_api/venv RUN source /home/ubuntu/canonicaliser_api/venv/bin/activate && pip install -r /home/ubuntu/canonicaliser_api/requirements.txt RUN export CFLAGS=-I/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include/ RUN source /home/ubuntu/canonicaliser_api/venv/bin/activate && cd /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/ && python setup.py build_ext --inplace RUN cp /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/canonicaliser/cython_extensions/*.so /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions RUN rm -rf /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/canonicaliser RUN rm -r /home/ubuntu/canonicaliser_api/canonicaliser/cython_extensions/build RUN mkdir /var/run/flask-uwsgi RUN chown -R www-data:www-data /var/run/flask-uwsgi RUN mkdir /var/log/flask-uwsgi ADD flask-uwsgi.ini /etc/flask-uwsgi/ ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf EXPOSE 8888 CMD ["/usr/bin/supervisord"] 

那么,如何为自定义图像(CMD?)提供服务而不是使用supervisord? 除非我忽略了一些东西….

UPDATE

我已经应用了build议的更新,但无法validationDockerHub上的私人回购。

 [2015-08-11T14:02:10.489Z] INFO [1858] - [CMD-Startup/StartupStage0/AppDeployPreHook/03build.sh] : Activity execution failed, because: WARNING: Invalid auth configuration file Pulling repository houmie/canon time="2015-08-11T14:02:08Z" level="fatal" msg="Error: image houmie/canon:latest not found" Failed to pull Docker image houmie/canon:latest, retrying... WARNING: Invalid auth configuration file 

S3存储桶中名为dockercfg的文件夹中的dockercfg

 { "auths": { "https://index.docker.io/v1/": { "auth": "xxxx", "email": "xxx@gmail.com" } } } 

Dockerrun.aws.json是:

 { "AWSEBDockerrunVersion":"1", "Authentication":{ "Bucket":"dd-xxx-ir-01", "Key":"docker/dockercfg" }, "Image":{ "Name":"houmie/canon", "Update":"true" }, "Ports":[ { "ContainerPort":"8888" } ] } 

使用Elastic Beanstalk部署容器时,可以告诉它通过您定义的Dockerfile在每台主机上本地构build映像,或使用registry中的预构build映像。

您不一定需要重新创build镜像,您可以使用已有的镜像(可以在Docker Hub或私有registry上)。

如果应用程序在托pipe存储库中可用的映像上运行,则可以在Dockerrun.aws.json文件中指定映像,并省略Dockerfile

如果您的注册帐户要求身份validation,那么您需要在S3存储桶中提供一个.dockercfg文件,该文件将由Docker主机提取(因此您需要通过IAMangular色为实例提供适当的权限)。

Dockerrun.aws.json文件的Authentication参数中声明.dockercfg文件。 确保Authentication参数包含有效的Amazon S3存储桶和密钥。 Amazon S3存储桶必须与使用它的环境位于同一区域。 Elastic Beanstalk不会从其他地区托pipe的Amazon S3存储桶中下载文件。 将操作s3:GetObject的权限授予实例configuration文件中的IAMangular色。

所以,你的Dockerrun.aws.json可能看起来像这样(考虑你的镜像托pipe在Docker Hub上)。

 { "AWSEBDockerrunVersion": "1", "Authentication": { "Bucket": "myBucket", "Key": ".dockercfg" }, "Image": { "Name": "yourRegistryUser/yourImage", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx" { 

请查看官方文档 ,了解有关configuration和可用选项的更多详细信息。

至于你运行什么命令( supervisord ,不pipe),没关系。