如何让Dockerrun.aws.json根据环境设置动态源路径?

时间:2017-09-08 14:02:20

标签: amazon-web-services docker amazon-ec2 elastic-beanstalk amazon-elastic-beanstalk

在Elastic Beanstalk中,代码上传到S3存储桶,然后挂载到EC2实例中的/var/app/current,因此所有卷都需要从那里获取。

所以我的Dockerrun.aws.json看起来像这样:

"volumes": [
    {
      "host": {
        "sourcePath": "/var/app/current/foo" // <<< problem lies here
      },
      "name": "foo"
    }

由于此/var/app/current事件,执行$ eb local run失败,因为部署时本地计算机上的源路径为~/bar/foo而不是/var/app/current/foo。错误如下:

Mounts denied:
The path /var/app/current
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

鉴于我希望我的eb部署在本地和远程使用相同的配置文件,我应该如何克服这个问题?

堆栈:

  • AWS Elastic Beanstalk多容器Docker
  • MacOS,Docker for Mac

1 个答案:

答案 0 :(得分:1)

默认情况下,Docker for Mac在路径下共享

  • /用户
  • /卷
  • 的/ tmp
  • /私有

Shared Volumes

因此,如果您的路径以其中任何一个开头,那么您可以将这两条路径保留在本地&amp; AWS然后它会工作。否则,您应该在Docker for Mac设置上共享/var