2016-07-05 2 views
1

Docker로 빌드 된 레일 애플리케이션을 Elastic Beanstalk의 다중 컨테이너 서비스에 배포하려고합니다.개인 도커 허치 이미지 용 Dockerrun.aws.json 파일

{ 
    "AWSEBDockerrunVersion": 2, 
    "volumes": [ 
    { 
     "name": "myapp", 
     "host": { 
     "sourcePath": "/var/app/current" 
     } 
    }, 
    { 
     "name": "myapp-redis", 
     "host": { 
     "sourcePath": "/var/app/current/myapp-redis" 
     } 
    }, 
    { 
     "name": "myapp-postgres", 
     "host": { 
     "sourcePath": "/var/app/current/myapp-postgres" 
     } 
    } 
    ], 
    "authentication": { 
    "bucket": "myapp", 
    "key": "config.json" 
    }, 
    "containerDefinitions": [ 
    { 
     "name": "redis", 
     "image": "redis:3.0.5", 
     "environment": [ 
     { 
      "name": "Container", 
      "value": "redis" 
     } 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 6379, 
      "containerPort": 6379 
     } 
     ], 
     "essential": true, 
     "memory": 128, 
     "mountPoints": [ 
     { 
      "sourceVolume": "myapp-redis", 
      "containerPath": "/var/lib/redis/data", 
      "readOnly": false 
     } 
     ] 
    }, 
    { 
     "name": "postgres", 
     "image": "postgres:9.4.5", 
     "environment": [ 
     { 
      "name": "Container", 
      "value": "postgres" 
     } 
     ], 
     "portMappings": [ 
     { 
      "hostPort": 5432, 
      "containerPort": 5432 
     } 
     ], 
     "essential": true, 
     "memory": 128, 
     "mountPoints": [ 
     { 
      "sourceVolume": "myapp-postgres", 
      "containerPath": "/var/lib/postgresql/data", 
      "readOnly": false 
     } 
     ] 
    }, 
    { 
     "name": "myapp", 
     "image": "myrepo/myapp:latest", 
     "environment": [ 
     { 
      "name": "Container", 
      "value": "myapp" 
     } 
     ], 
     "essential": true, 
     "memory": 128, 
     "mountPoints": [ 
     { 
      "sourceVolume": "myapp", 
      "containerPath": "/myapp", 
      "readOnly": false 
     } 
     ] 
    } 
    ] 
} 

config.json 파일이 버킷 myapp/config.json에 있고 같은 포맷 : 나는 "image": "myrepo/myapp:latest", 라인에 대한 대중의 repo 가리킬 때

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

이 설치 작품처럼 내 Dockerrun.aws.json 현재 보이는 하지만이 구성으로 초기화하려고하면 오류가 발생합니다. err="Error: image myrepo/myapp:latest not found"ERROR [Instance: i-913b2004] Command failed on instance. Return code: 1 Output: 'Failed to start ECS task after retrying 2 times.'

행운을 남기는 방식으로 config.json을 구성 해 보았습니다. 이 문제에 대한 도움이 있으면 대단히 감사하겠습니다!

+0

공용 repo를 가리키는이 구성을 사용하면 작동하지만, 개인 repo를 지정하면 오류가 발생합니다 (다른 모든 것은 동일합니다) ? – Ray

+0

그래, 나는 그것을 걸고있는 유일한 것을 말할 수있는 한 개인 프라이팬이라는 사실이다. – Raskolnikov

+0

인증의 전체 내용을 넣을 수 있습니까? 얼마나 중첩되는지 확인하고 싶습니까? 1.7 docker 또는 1.6 & 이전 버전의 구성입니까? – Ray

답변

1

업데이트 : OP가 필요한 특정 역할을 찾았습니다. aws-elasticbeanstalk-ec2-role에는 AmazonS3ReadOnlyAccess 정책이 필요했습니다.

EB는 서비스 역할을 통해 실행됩니다. 이러한 역할을 수행하려면 S3에서 자격 증명 파일을 가져 와서 적절한 자격을 부여 받아야합니다. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html

또한 Docker 1.7 이상을 로컬에서 사용하고있는 것으로 추측합니다.

도커 1.7+ 로그인이 같은 자격 증명 파일 config.json를 생성 누락 된 외부 인증 블록

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

주의 사항 :

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

탄성 콩 줄기는 같은 단지 이전 설정 개체 형식을하고자하는 데 사용 ?

가 아니면 그것은 다른 방법으로 주위 그리고 당신은이 파일을 편집하고 다시 업로드를 EB에 시도 할 수 고정 표시기를 1.9.1

을 사용하여 OP EB 참고로하면 ElasticBeanstalk는 새로운 형식을 기대하고있다. 자세한 내용은이 페이지의 하단을 참조하십시오 : http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html#docker-images-private

+0

내 파일이 현재 어떻게 보이나요? 내 질문의 두 번째 코드 블록에서 언급했듯이? 아니면 아직도 잘못 보입니까? – Raskolnikov

+0

@Raskolnikov 반대쪽을 시도해보십시오. 외부 인증 블록을 json에 추가하십시오. 그들의 문서는 악명 높다. 어쩌면 새로운 설정 포맷을 받아 들일 수도있다. – Ray

+0

지금 시도해보기. – Raskolnikov