【问题标题】:How to keep file sync'd in OpenShift?如何在 OpenShift 中保持文件同步?
【发布时间】:2013-01-04 17:49:40
【问题描述】:

对于 OpenShift:

我在 ~app-root/repo/data. 中创建了一个测试目录 我在本地也有 'myapp'/data 目录。我可以用 git 推送到 OpenShift。我的测试文件上传正常,我可以用 ssh 检查。

现在我用 nano 或 vim 远程创建一个文件 --file 名为 remoteFileVim 文件存在于 repo/data 目录中。当我在本地执行 git pull 时,我看不到该文件 remoteFileVim

我在app-root/data 中创建了第二个文件secondVimFile,如何将这个文件拉到本地机器。我可以使用git 吗?如果有帮助,我在 Openshift 上加载了 python 2.6、cron、mysql。

【问题讨论】:

    标签: git openshift


    【解决方案1】:

    如果您可以 ssh 进入机器,您应该可以使用scp 读取或写入文件。

    仅将新文件放入 Openshift 齿轮的 ~/app-root/repo/ 文件夹中不会导致文件包含(签入)您的修订控制系统。通常,您应该使用 git commitgit push 在本地对您的应用程序进行大部分更改,然后将这些更改推送到您的 OpenShift 设备。

    如果您的应用需要磁盘存储或访问其他内容,例如secret tokens and keys that you would prefer to keep out of your source code - 您可以将此内容放在您的~/app-root/data 文件夹中。此目录不受部署影响,已为您的应用的本地磁盘存储需求预留。

    【讨论】:

      【解决方案2】:

      查看此博客:https://community.jboss.org/people/ozizka/blog/2013/01/06/openshift--how-to-make-uploaded-files-public

      OpenShift 应用程序代码是使用 Git 上传的。 推送后重新创建存储库目录中的任何更改。 因此,将上传的文件存储在那里是行不通的。

      您可以使用的唯一持久目录是 ../data。它的完整路径存储在环境变量 $OPENSHIFT_DATA_DIR 中。 然而,这个目录不是公开的——所以没有 URL 指向那里。

      解决方案非常简单 - 只需创建一个符号链接。这是 PHP 的一个示例。 通过 SSH 登录到您的机器,然后运行:

      mkdir app-root/data/photos
      cd app-root/repo/php    #  php/ is the only publicly accessible directory (by default, not sure if not changeable in .htaccess).
      ln -s ../../data/photos photos
      

      这使得 ../data/photos 中的内容可以通过 http://myapp-myaccount.rhcloud.com/photos/ 公开访问。 管理文件的目录可以使用$_ENV['OPENSHIFT_DATA_DIR']引用。

      【讨论】:

        【解决方案3】:

        您远程执行的任何操作(包括 SSH)都发生在 app-root 中。 GIT 使用应用程序部署。 您需要将文件从 app-root 复制到您的计算机,然后使用 GIT 推送它们。此外,既不是 /data,也不是 app-root 规模。只有 app-deployments>current 被缩放。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-09
          • 1970-01-01
          • 2019-01-17
          • 2015-07-17
          • 1970-01-01
          • 1970-01-01
          • 2012-11-05
          • 1970-01-01
          相关资源
          最近更新 更多