如何获得Dockerrun.aws.json基于环境设置dynamicsourcePath?

在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失败,因为我的本地机器上的源path在部署时是~/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部署工作在本地和远程使用相同的configuration文件,我应该如何克服这个问题?

堆栈:

  • AWS Elastic Beanstalk多容器Docker
  • 适用于Mac的MacOS,Docker

默认情况下,Docker for Mac共享下面的path

  • /用户
  • /卷
  • / tmp目录
  • /私人的

共享卷

所以,如果你的path从任何一个开始,你可以在本地和AWS上保留这两个path,那么它将工作。 否则,你应该在你的Docker for Mac设置上共享/var