【问题标题】:How to save uploaded files in git repository after pushing?推送后如何将上传的文件保存在git存储库中?
【发布时间】:2016-10-09 05:59:03
【问题描述】:

我使用 Openshift。它使用 git - 你只需推送,服务器就会进行所有部署。然后我做了一个上传图片的应用程序。显然,我将它们上传到 git repo 并在推送所有图片后擦除。保存图片的最佳做法是什么?

我试过了:

1) 先拉再推 - 没有意义

2) gitignoring /media 文件夹 - 没有意义

我可以试试:

1) 只为照片部署另一项服务。我的朋友说这是一个奇怪的决定,如果我想更新那台新服务器,我也会遇到同样的问题

2) 以某种方式将照片保存在 git repo 之外,但我不知道如何实现它,也不知道这是否是一个好习惯

有什么建议吗?期待您的阅读。

【问题讨论】:

  • 把你的媒体文件放到其他分支,并将这个分支推送到openshift,其他分支只用于源代码。
  • 你研究过 git-lfs 吗?
  • @EdgardLeal,如何从前端访问其他分支中的文件?以及如何上传?
  • @BrianaSwift,同样的问题。仅当我理解正确并且需要从 Web 界面上传文件时,此解决方案才适用于预加载的文件
  • 查看本指南以使用不同的分支在 openshift 上进行部署:$ rhc deploy <branch_name> -a <app>developers.openshift.com/managing-your-applications/…

标签: git upload openshift


【解决方案1】:

当你推送任何 git 时,它会保存在一个特殊的目录中,该目录存储在环境变量 OPENSHIFT_REPO_DIR 中。此目录始终保存应用程序的当前部署版本。

现在,Openshift 有其他特殊目录,您可以通过以下环境变量访问它们:OPENSHIFT_HOMEDIROPENSHIFT_DATA_DIROPENSHIFT_TMP_DIROPENSHIFT_LOG_DIR。 OPENSHIFT_DATA_DIR 是持久数据目录。每次 git push 后,该目录的内容都不会被删除。您应该始终将文件保存在此目录中,这是一个很好的做法。这就是 Openshift 的工作原理。

如果您的应用程序处理上传的图像,请修改应用程序代码以将其保存在数据目录中。您可以使用OPENSHIFT_DATA_DIR 环境变量来获取数据目录位置。如何访问应用程序中的环境变量取决于您使用的编程语言。

在 php 中,

$data_dir = getenv('OPENSHIFT_DATA_DIR');

在 node.js 中

var dataDir = process.env.OPENSHIFT_DATA_DIR

有关 Openshift 使用的环境变量列表,请参阅here

【讨论】:

  • 好!这是我需要的!为了访问这些数据,我需要在我的服务器中编写额外的 getter 来访问这个文件夹,对吗?
  • 是的。在您的服务器中,获取数据目录到 variable 并使用 variable/image.name 从该目录保存/获取/修改图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2013-05-07
  • 2019-08-30
相关资源
最近更新 更多