2017-02-12 10 views
13

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html#docker-singlecontainer-dockerrun-privaterepoНе удается проверить подлинность Докер в Elastic Beanstalk через S3

Следуя инструкциям здесь, чтобы подключиться к частному докер хаба контейнера из Elastic Beanstalk, но он упорно отказывается работать. Похоже, что при вызове docker login в Докер 1.12 полученный файл не имеет свойства электронной почты, но это звучит как AWS ожидает, что это так, я создаю файл с именем dockercfg.json который выглядит следующим образом:

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

Соответствующая часть моего Dockerrun.aws.json файл выглядит следующим образом:

"Authentication": { 
    "Bucket": "elasticbeanstalk-us-west-2-9...4", 
    "Key": "dockercfg.json" 
    }, 

И у меня есть файл закачанный в корне ведра S3. Почему я все еще получаю ошибки, которые говорят Error: image c...6/w...t:23 not found. Check snapshot logs for details. Я уверен, что имена правильные, и это будет работать, если это публичный репозиторий. Полная ошибка ниже. Я развертываю из GitHub с Circle CI, если это имеет значение, с удовольствием предоставит любую другую необходимую информацию.

INFO: Deploying new version to instance(s).       
WARN: Failed to pull Docker image c...6/w...t:23, retrying... 
ERROR: Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t 
Error: image c...6/w...t:23 not found. Check snapshot logs for details. 
ERROR: [Instance: i-06b66f5121d8d23c3] Command failed on instance. Return code: 1 Output: (TRUNCATED)...b-project 
Error: image c...6/w...t:23 not found 
Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t 
Error: image c...6/w...t:23 not found. Check snapshot logs for details. 
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI. 
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1]. 
ERROR: Unsuccessful command execution on instance id(s) 'i-06b66f5121d8d23c3'. Aborting the operation. 
ERROR: Failed to deploy application.         

ERROR: Failed to deploy application. 

EDIT: Вот полный файл Dockerrun. Обратите внимание, что% BUILD_NUM% - это просто int, я могу проверить, работает ли это.

{ 
    "AWSEBDockerrunVersion": "1", 
    "Authentication": { 
    "Bucket": "elasticbeanstalk-us-west-2-9...4", 
    "Key": "dockercfg.json" 
    }, 
    "Image": { 
    "Name": "c...6/w...t:%BUILD_NUM%", 
    "Update": "true" 
    }, 
    "Ports": [ 
    { 
     "ContainerPort": "8080" 
    } 
    ] 
} 

EDIT: Кроме того, я проверил, что это работает, если я сделаю это Docker Hub контейнера общественности.

+0

Не могли бы вы разместить весь файл Dockerrun.aws.json? – sap1ens

+0

Да спасибо, только что сделал – CamJohnson26

+0

Все кажется правильным. Не могли бы вы подтвердить, что у EB есть все необходимые разрешения IAM для доступа к этому ведро S3? – sap1ens

ответ

4

ОК, давайте сделаем это;

Глядя на той же странице док,

С Докер версии 1.6.2 и выше, то команда докер Войти создает файл аутентификации в ~/.dockercfg в следующем формате:

{ 
    "server" : 
    { 
    "auth" : "auth_token", 
    "email" : "email" 
    } 
} 

У вас уже есть эта часть, я вижу. Пожалуйста, дважды проверьте случаи ниже по одному;

1) Вы принимаете ведро S3 в том же регионе?

Ковш Amazon S3 должен размещаться в том же регионе, что и окружающая его среда . Elastic Beanstalk не может скачивать файлы из ведра Amazon S3, размещенного в других регионах.

2) Вы проверили требуемые разрешения?

Предоставить разрешения для операции s3: GetObject для роли IAM в профиле экземпляра. Для получения дополнительной информации см. Managing Elastic Beanstalk Instance Profiles.

3) У вас есть информация о вебе S3 в файле конфигурации? (Я думаю, что вы получили это тоже)

Включить информацию о Amazon S3 ведро в Authentication (v1) или authentication параметр (v2) в файле Dockerrun.aws.json.

Невозможно увидеть ваши разрешения или ваш регион env, поэтому, пожалуйста, проверьте их дважды. Если это не сработает, я обновил бы до Docker 1.7+, если это возможно, и используйте соответствующий стиль ~/.docker/config.json.

+1

Спасибо за предложения, к сожалению, я сделал глупую ошибку, имея 2 файла Dockerrun.aws.json и редактируя неправильный, так как у меня возникали проблемы с авторизацией, независимо от того, что я никогда не проверял дважды. Теперь все разрешено. – CamJohnson26