2016-07-05 47 views
1

我想部署一個使用Docker構建的Rails應用程序到Elastic Beanstalk的多容器服務。我Dockerrun.aws.json目前的樣子:Dockerrun.aws.json文件私人dockerhub圖像

{ 
    "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和的格式如下:

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

這樣的設置,當我點到公共回購爲"image": "myrepo/myapp:latest",線工程,但是當我嘗試使用此配置初始化時,出現錯誤: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

只需要清楚,當你使用這個配置指向一個公共回購它的作品,但如果你指出它一個私人回購你得到的錯誤(其他一切都是相同的) ? – Ray

+0

是的,據我所知,唯一可以掛斷的是這是一個私人回購。 – Raskolnikov

+0

你可以把auth的完整內容,我想看看它的嵌套有多遠? 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這樣的:

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

彈性豆莖用於想僅舊配置對象格式是這樣的:

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

通知缺少外AUTH塊?

或者也許是周圍的其他方法,如果你在你的OP EB注意使用泊塢窗1.9.1

你可以嘗試編輯這個文件,再上傳到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