如何在不破坏容器的情况下仅推送本地更改?

时间:2016-09-05 08:44:43

标签: cloudfoundry swisscomdev

我已使用<Grid.ColumnDefinitions> <ColumnDefinition Width="7*"/> <ColumnDefinition Width="3*"/> </Grid.ColumnDefinitions> 将我的应用程序(PHP Buildpack)部署到生产环境中。之后我研究了更多功能和错误修正。现在我想将我的本地更改推向生产。但是当我这样做时,生产服务器上保存的所有图像(例如配置文件图像)都会在每次推送时丢失。

如何仅接管代码中的更改而不丢失生产服务器上的任何存储文件?

应该像“cf push app-name

2 个答案:

答案 0 :(得分:4)

您的应用程序容器应该是无状态的。要保留数据,您应该使用提供的服务。 Swisscom Application Cloud提供S3 compatible Dynamic Storage(例如用于图片或用户头像)或不同的数据库服务(MongoDBMariaDB和其他服务。如果需要保存用户数据,则应将其保存在其中一个服务中,而不是应用程序容器的本地文件系统中。如果您的应用无状态,您可以更轻松地迁移和扩展它。您可以找到有关如何构建应用程序以在现代云环境here中运行的更多信息。要获取有关如何将您的应用与服务结合使用的详情,请查看this link

答案 1 :(得分:1)

来自Avoid Writing to the Local File System

  

在Cloud Foundry上运行的应用程序不应该将文件写入   本地文件系统的原因如下:

     

本地文件系统存储是短暂的。当一个应用程序实例   崩溃或停止,分配给该实例的资源是   由平台回收,包括自此以来所做的任何本地磁盘更改   应用程序已启动。重新启动实例时,应用程序将   从一个新的磁盘映像开始。虽然您的应用程序可以写本地   文件运行时,文件将在消失后消失   应用程序重启。

     

同一应用程序的实例不共享   本地文件系统。每个应用程序实例都在自己的独立运行   容器。因此,一个实例写入的文件对其他实例不可见   同一应用程序的实例。如果文件是临时的,这个   应该不是问题。但是,如果您的应用程序需要数据   在文件中保持跨应用程序重新启动或数据需要   要在应用程序的所有正在运行的实例之间共享,   不应使用本地文件系统。我们建议使用共享数据   为此目的,像数据库或blobstore一样的服务。

将来你的问题将会解决问题&#34;与Volume Services (Experimental)。您将拥有适用于您应用的永久磁盘。

  

Cloud Foundry应用程序开发人员可能需要他们的应用程序   挂载一个或多个卷以写入可靠的,   非短暂的文件系统。通过与服务经纪人和服务经纪人整合   Cloud Foundry运行时,提供商可以提供这些服务   开发人员通过自动化,自助服务和按需用户   经验。

请订阅我们的时事通讯,了解功能公告。还请监控CF社区的上游开发。