mijo / gae-flow
使用 composer.json 在 Google App Engine 上部署,并以相同的逻辑在开发中提供服务。
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-29 05:18:36 UTC
README
Google App Engine for PHP 的部署和开发服务器。这不是一个通用库,而是一种有见地的做事方式。Google App Engine 默认没有好的方式来存储秘密。我选择在部署时将环境变量添加到 app.yaml
中。这样既可以从您的本地机器,也可以从管道中工作。我在用户的家目录中存储的正常 propfile 中的秘密。这样可以在同一 Google App Engine 项目中部署的应用程序之间共享。
为了使生产环境和开发环境之间有持续的方式,我们对本地开发中使用的变量也这样做。
不用说,这种方法最适合独立项目,或者开发者较少的项目。
环境变量
这些存储在标准的 INI 文件 中,这些文件必须放置在用户家目录中的当前项目之外。
~/.{{myprojectkey}}/prod.env
用于生产部署。~/.{{myprojectkey}}/dev.env
用于 devserver。
这样它们可以在同一项目中共享,并在项目外部保持相对安全。不是理想的,但至少您不需要将文件检入项目中。
脚本
这个库包含两个脚本,deploy
和 serve
。它们通过 composer.json 的 "extra" 字段进行配置。
部署(到 Google App Engine)
这使用 gcloud 命令行工具 进行部署。这必须在 PATH 上才能正常工作。
配置
在 composer.json 中,将以下内容添加到 额外数据字段。
{ "extra": { "gcloud:project": "myprojectkey", } }
服务(使用内置服务器)
这只是一个简单的包装,围绕着 PHP 内置服务器。但它确实调用一个配置为模仿使用 Google App Engine 部署应用程序时的默认行为的路由脚本。这不会读取 app.yaml 来解析静态路由。但如果你有一个相当简单的设置,这不应该成问题。
配置
在 composer.json 中,将以下内容添加到 额外数据字段。
{ "extra": { "serve:addr": "0.0.0.0", "serve:docroot": "/", "serve:entrypoint": "entrypoint.php", "serve:port": 2004 } }
在脚本部分,您可以/应该添加部署命令。
{ "scripts": { "deploy": "GaeFlow\\Script::deploy", "serve": "GaeFlow\\Script::serve" } }
如果您想在部署脚本之前运行脚本。例如构建前端,可以通过传递一个命令数组来完成,如下所示
{ "scripts": { "deploy": [ "yarn build", "GaeFlow\\Script::deploy" ] } }
测试
可以使用 composer test
运行测试,项目使用 phpunit 作为测试运行器。