【问题标题】:How to get Dockerrun.aws.json set dynamic sourcePath based on environment?如何根据环境获取 Dockerrun.aws.json 设置动态 sourcePath?
【发布时间】:2018-02-17 11:43:45
【问题描述】:

在 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

【问题讨论】:

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


    【解决方案1】:

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

    • /用户
    • /卷
    • /tmp
    • /私人

    因此,如果您的路径以其中任何一个开头,并且您可以将两条路径都保留在本地和 AWS 上,那么它会起作用。否则,您应该在 Docker for Mac 设置上共享 /var

    【讨论】:

    • 这会将应用程序源代码放置在我的本地计算机中的一个名为 /var/app/current 的文件夹中,我必须在其中 sudo 执行我在其中所做的一切。我创建了一个符号链接。仍在寻找比此解决方法更完整的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    相关资源
    最近更新 更多