如何在OpenShift中保持文件同步?

时间:2013-01-04 17:49:40

标签: git openshift

对于OpenShift:

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

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

我在app-root/data中创建了第二个名为secondVimFile的文件,如何将此文件提取到本地计算机。我可以使用git吗?我在Openshift上加载了python 2.6,cron,mysql,如果有帮助的话。

3 个答案:

答案 0 :(得分:4)

如果您可以使用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文件夹中。此目录不受部署的影响,并且已根据应用程序的本地磁盘存储需求进行了预留。

答案 1 :(得分:3)

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

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

您可以使用的唯一持久目录是../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']来引用管理文件的目录。

答案 2 :(得分:0)

你在远程(包括SSH)做的任何事情都发生在app-root中。 GIT使用应用程序部署。 您需要将文件从app-root复制到您的计算机,然后使用GIT推送它们。还有,不是/数据,也不是app-root规模。只有app-deployments> current才会缩放。