2015-08-10 10 views
5

Глядя на это blog - 5. Create Dockerfile. Кажется, мне пришлось создать новый файл Docker, указывающий на мое личное изображение на Docker.io.Как развернуть пользовательский образ докеров на эластичном бобовом стебле?

И поскольку последняя команда должна начинать исполняемый файл или докер изображение будет в конечном итоге в нирване, есть 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 

Это немного сбивает с толку для меня, потому что у меня есть полностью протестированы пользовательские 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

Я применил обновления, но он не может проверить подлинность частной репо на 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 

dockercfg внутри папки под названием docker в ведре S3 является

{ 
     "auths": { 
       "https://index.docker.io/v1/": { 
         "auth": "xxxx", 
         "email": "[email protected]" 
       } 
     } 
} 

Dockerrun.aws.json является:

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

ответ

5

При развертывании контейнеров с эластичным Beanstalk, вы можете сказать ему, чтобы построить ваше изображение локально на каждом хосте от Dockerfile, определенный вами, или для использования предварительно созданное изображение из реестра.

Возможно, вам не обязательно воссоздавать свое изображение, вы можете просто использовать тот, который у вас уже есть (будь то на Docker Hub или в частном реестре).

Если ваше приложение работает на образ, который доступен в размещенном хранилище, вы можете указать изображение в Dockerrun.aws.json файла и опустить Dockerfile.

Если проверка подлинности учетной записи требует реестра, то вам необходимо предоставить файл .dockercfg на ведро S3, который будет запряженных Docker хостов (так что вам нужны соответствующие разрешения, данные экземпляры через IAM роли) ,

Объявляет файл .dockercfg в параметре Проверка подлинности файла Dockerrun.aws.json. Убедитесь, что параметр 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" 
{ 

Посмотрите на official documentation для получения более подробной информации о конфигурации и возможных опций.

Что касается команды, которой вы управляете (supervisord, что бы там ни было), это не имеет значения.

+0

Благодарим за отзыв. Правила SO диктуют, что принятый ответ должен быть автономным без необходимости ссылаться на другой источник, чтобы понять его. Я все еще не понимаю этого, не читая связанную документацию. Как только я прочитал это, я возвращаюсь снова. Спасибо – Houman

+0

Спасибо, я понял, что мой ответ был не совсем прав, поэтому я переделал его с дополнительной информацией и конкретными деталями. Теперь, я думаю, все в порядке. Спасибо за совет. –

+0

Спасибо за обновление. Я обновил свой вопрос с некоторыми обновлениями. Вы столкнулись с проблемой auth? – Houman

 Смежные вопросы

  • Нет связанных вопросов^_^