【问题标题】:Access files on host server from the Meteor App deployed with Meteor Up从使用 Meteor Up 部署的 Meteor App 访问主机服务器上的文件
【发布时间】:2020-08-28 02:56:40
【问题描述】:

我有一个使用 Meteor UP 部署到 Ubuntu 的 Meteor 应用程序。 从这个应用程序中,我需要读取一个位于主机服务器上的应用程序容器之外的文件。

我该怎么做?

我尝试在 mup.js 中设置卷,但没有成功。看来我错过了如何正确提供/host/path/container/path

volumes: {
      // passed as '-v /host/path:/container/path' to the docker run command
      '/host/path': '/container/path',
      '/second/host/path': '/second/container/path'
    },

阅读 Docker 安装卷的文档,但显然无法理解。

假设文件位于/home/dirname/filename.csv

如何正确挂载到App中,才能从Application中访问?

或者也许还有其他访问它的可能性?

【问题讨论】:

    标签: docker meteor meteor-up


    【解决方案1】:

    欢迎来到 Stack Overflow。让我提出另一种思考方式......

    在可扩展的集群中,docker 实例可以随着应用负载的变化而向上和向下旋转。它们可能在也可能不在同一台主机上,因此构建对主机文件系统的依赖并不是一个好主意。

    您最好考虑使用文件存储机制,例如 S3,它可以自行扩展,并且磁盘存储限制不适用。

    另一种选择是确定文件是否可以存储在数据库中。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      让我们试着缩小问题的范围。

      Meteor UP 将配置参数volumes 直接传递给 docker,正如他们在您包含的评论中提到的那样。因此,直接针对 docker 进行测试可能更容易 - 尽可能缩小所涉及的组件:

      sudo docker run \
        -it \
        --rm \
        -v "/host/path:/container/path" \
        -v "/second/host/path:/second/container/path" \
        busybox \
        /bin/sh
      

      让我解释一下:

      我希望您也无法访问此处的文件。在这种情况下,请深入挖掘为什么不能在 Docker 中使文件夹可访问。

      如果可以的话,这对我来说听起来很奇怪,你可以启动容器并尝试通过运行以下命令来访问容器:

      docker exec -it my-mup-container /bin/sh
      

      你可以把这个命令想象成 SSH'ing 到一个正在运行的容器。现在您可以检查它是否真的不存在,容器内的凭据是否正确等等。

      最后,我必须同意@mikkel,它不是挂载本地目录的好选择,但是您现在可以开始研究如何使用docker volume 来挂载远程目录。他提到了 AWS 的 S3,我在 Azure 上与 AzureFiles 合作过,有很多可能性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-10
        • 1970-01-01
        • 2014-07-10
        • 1970-01-01
        • 2014-08-13
        • 2017-03-01
        • 1970-01-01
        • 2016-01-21
        相关资源
        最近更新 更多