Hou*_*man 5 python amazon-web-services docker amazon-elastic-beanstalk
看看这个博客 - 5.创建Dockerfile.看来我必须在Docker.io上创建一个指向我私有映像的新Dockerfile.
并且由于最后一个命令应该是启动一个可执行文件,或者docker镜像最终会出现在必杀技中,所以最后有一个supervisrd:
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
Run Code Online (Sandbox Code Playgroud)
这对我来说有点混乱,因为我有一个经过全面测试的自定义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"]
Run Code Online (Sandbox Code Playgroud)
那么如何提供我的自定义图像(CMD?)而不是使用supervisord?除非我忽略了什么....
UPDATE
我已应用建议的更新,但无法在DockerHub上对私有仓库进行身份验证.
[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
Run Code Online (Sandbox Code Playgroud)
在dockercfg
一个文件夹,名为里面docker
里面的S3存储是
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "xxxx",
"email": "xxx@gmail.com"
}
}
}
Run Code Online (Sandbox Code Playgroud)
该Dockerrun.aws.json
方法是:
{
"AWSEBDockerrunVersion":"1",
"Authentication":{
"Bucket":"dd-xxx-ir-01",
"Key":"docker/dockercfg"
},
"Image":{
"Name":"houmie/canon",
"Update":"true"
},
"Ports":[
{
"ContainerPort":"8888"
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用Elastic Beanstalk部署容器时,您可以告诉它使用您定义的Dockerfile在每个主机上本地构建映像,或者使用注册表中的预构建映像.
您不一定要重新创建图像,您可以使用已有的图像(无论是在Docker Hub还是私有注册表中).
如果应用程序在托管存储库中可用的映像上运行,则可以在Dockerrun.aws.json文件中指定映像并省略Dockerfile.
如果您的注册表帐户需要身份验证,则需要在S3存储桶上提供.dockercfg文件,该文件将由Docker主机提取(因此您需要通过IAM角色为实例提供适当的权限).
在Dockerrun.aws.json文件的Authentication参数中声明.dockercfg文件.确保Authentication参数包含有效的Amazon S3存储桶和密钥.Amazon S3存储桶必须与使用它的环境位于同一区域.Elastic Beanstalk不会从其他区域托管的Amazon S3存储桶下载文件.将操作s3:GetObject的权限授予实例配置文件中的IAM角色.
因此,您的Dockerrun.aws.json可能看起来像这样(考虑到您的图像托管在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"
{
Run Code Online (Sandbox Code Playgroud)
有关配置和可用选项的更多详细信息,请查看官方文档.
至于你运行什么命令(supervisord,无论如何),这没关系.
归档时间: |
|
查看次数: |
1373 次 |
最近记录: |