如何在没有运行作曲家的情况下在谷歌应用引擎上部署 php 应用程序?



正如你在这里看到的: 指定依赖关系

Google App Engine "Composer 会在您部署新版本的应用时自动运行...">

我宁愿它没有。我有在部署之前运行的脚本,以删除已部署应用程序(文档、测试等(中不需要的作曲家依赖项中的所有不必要内容。

我的 .gcloudignore 文件不包含/vendor 目录,这已通过上传时的文件计数得到确认。但是,当我检查已部署的源时,作曲家依赖项与我清理的本地依赖项不匹配,因为 App Engine 正在覆盖它们。

不知道为什么首先这是一个功能,似乎最好将其留给开发人员控制。

我确实启用了计费并且功能齐全。谢谢!


编辑

我将 composer.json 和 composer.lock 文件添加到忽略文件中以防止更新,然后部署的源代码中完全缺少供应商目录。供应商目录不在被忽略的文件中,并且已上载。例如,如果我添加依赖性,则上传文件计数反映了添加的依赖项文件的文件计数。

这让我想知道在部署期间上传后是否正在运行某些内容以删除供应商目录。他们确实将其默认删除在忽略文件中。我假设通过将其取出将允许上传和部署它(供应商目录(

我一直在努力重现您的问题,并试图实现您描述为您需要发生的所有事情。我发现了一些有趣的事情。

我想在将供应商/文件夹部署到 GAE 时查看其确切行为,并准确了解导致问题的原因,因此我按照以下步骤操作:

  1. 克隆一个简单的PHP项目只是为了节省时间。
  2. 在本地安装了作曲家,所以我可以要求依赖项。
  3. 我需要一个简单的依赖项(所以它创建了vendor/,composer.json,composer.lock

    composer require phpunit/php-timer

这使我在本地拥有依赖项,因此它直接上传它们。在尝试部署之前,是否可以尝试使用作曲家文件执行此操作?

  1. 做了 gcloud 应用程序部署并上传了所有内容,我仍然怀疑这是我的本地文件夹或在运行时生成。
  2. 然后我做了一个简单的.gcloudignore 作为测试,在其中添加了test*,做了一个gcloud应用程序部署,它上传了除测试文件夹之外的所有内容。

在这里您可以指定要避免上传的所有内容,我认为这将是解决您所有麻烦的更简单的解决方案。这些是您可以使用的.gcloudignore 格式。

它像这样对我有用,希望它能帮助你。

让我知道。

最新更新