通过cf成功推送我的应用程序后,我通常需要手动ssh-log进入容器并执行几个PHP脚本来清除和预热我的缓存,可能会执行一些数据库架构更新等。
今天我发现了Cloudfoundry Tasks这似乎提供了一种很好的方法来完成这类事情,我想测试一下我是否可以将它集成到我的构建和部署脚本中。
所以使用cf登录,成功连接到正确的组织和空间,app已被推送并且正在运行,我尝试了这个命令:
cf run-task MYAPP "bin/console doctrine:schema:update --dump-sql --env=prod" --name dumpsql
(尝试使用app / bin / console等几个文件夹更改。)
这是输出:
Creating task for app MYAPP in org MYORG / space MYSPACE as me@myemail...
Unexpected Response
Response Code: 404
FAILED
使用CF CLI:6.32.0
cf logs ArcticTenTestBackend --recent
没有输出任何内容(这可能就是这种情况,因为我已经启用了ELK实例进行日志记录 - 因为我想连接到ELK以查找我发现的服务连接器的日志cf插件已经不见了,我将打开一张新票。)
答案 0 :(得分:3)
这不是CF CLI问题。 Swisscom Application Cloud尚不支持Cloud Foundry任务。这解释了您目前收到的404。我们将在即将发布的Swisscom Application Cloud版本中公开Cloud Foundry的这一功能。
与此同时,也许您可以在应用程序启动时找到执行一次性任务(缓存预热,数据库迁移)的方法。
答案 1 :(得分:1)
正如@Mathis所提到的那样,自发布此问题以来,Kretz Swisscom已经启用cf run-task
。他们于2018年11月22日发送电子邮件以宣布该功能。
如在链接文档中所讨论的,您使用以下命令来管理tasks
:
cf tasks [APP_NAME]
cf run-task [APP_NAME] [COMMAND]
cf terminate-task [APP_NAME] [TASK_ID]