0

私は自分の php プロジェクトを cloudcontrol.com でホストしています。私のプロジェクトには、次のようにユーザー プロファイルの写真を保存する静的フォルダーがあります。

uploads/profile/userpic1.jpg
uploads/profile/userpic2.jpg
uploads/profile/userpic2.jpg

.gitignore ファイルを使用して、プロファイル フォルダー内のすべてのファイルを .gitignore します。

*
!.gitignore

私のローカル環境では、いくつかのテストを行うときに、そのフォルダー内にいくつかの写真をアップロードします。私の運用環境では、ユーザーもプロフィール写真を変更し、そのフォルダーに保存します。

私の問題は次のとおりです。

更新を本番サーバーにプッシュするたびに、サーバーのプロファイルディレクトリ内のすべてのファイルが失われました!! 古いファイル/写真に触れずに内容を更新するだけでなく、プロファイルディレクトリを git (または cloudcontrol) REPLACE するようです。

どうすればこれを修正できますか。私はそれが単なる .gitignore の問題だと思っていました。これを機能させるためにあらゆることをしましたが、できませんでした。私は Git と PaaS のことは初めてです。

ありがとうございました

4

2 に答える 2

3

cloudControl は、ほとんどのクラウド アプリケーション ホスティング サービスと同様に、デプロイ時に完全なアプリケーション フォルダーを置き換えます。これは通常、水平方向のスケーリングを可能にし、すべての展開が同じ (空の) 状態に基づくようにするために行われます。

非永続的なファイルシステムに関するドキュメントも参照してください。

非永続ファイルシステム

TL;DR:

  • 各コンテナには独自のファイルシステムがあります。
  • ファイルシステムは永続的ではありません。
  • ファイルシステムにアップロードを保存しないでください。

cloudControl プラットフォーム上のデプロイメントは、書き込み可能なファイル システムにアクセスできます。ただし、このファイルシステムは永続的ではありません。書き込まれたデータは、ルーティング層が利用可能なコンテナー間でリクエストをルーティングする方法に応じて、将来のリクエストで再度アクセスできる場合とできない場合があり、デプロイのたびに削除されます。これには、手動でトリガーするデプロイが含まれますが、通常の操作中にプラットフォーム自体によって行われる再デプロイも含まれます。

顧客のアップロード (ユーザー プロフィール写真など) については、Amazon S3 などのオブジェクト ストアまたはMongoLab アドオンの一部として利用可能な GridFS 機能をお勧めします。

したがって、ファイルを動的に保存する場合は、そのための別のソリューションを検討する必要があります。

于 2014-11-17T01:28:46.003 に答える
0

これが、git を使用するほとんどの展開アプリのしくみです。いずれにせよ、git はアセットのバージョン管理には最適ではなく、主にコードに使用する必要があります。.gitignoreそうは言っても、バージョンを付けたいコンテンツとバージョンを付けたくないコンテンツの間に明確な識別子がある限り、引き続き利用できます。自分のファイルはすべて、versionこのようなことができるという言葉で始まるとしましょう

/public/assets/images/users/*
!/public/assets/images/users/version*
于 2014-11-17T01:46:39.433 に答える