cf run-task是否需要在运行前上传env/script?优雅的方式?

本文介绍了cf run-task是否需要在运行前上传env/script?优雅的方式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,我在云铸造厂工作。我的需要是在我的应用程序之外运行数据库迁移,以便我可以在需要时以某种方式(cf命令、API调用等)触发迁移。,建议我使用cf run-task。经过检查,我的理解是cf run-task是cf空间的&q;SSH客户端&接口,因为我们甚至可以将"echo 1"作为cf任务运行。我在官方cf CLI文档或一些在线指南上看到的示例显示cf run-task my-app "bin/rails db:migrate" --name my-task。,但我还是很困惑。我的问题是:,我是CF的新手,这可能是一个非常愚蠢的问题,但我已经花了几天的时间来研究它,还没有得到正确的答案。我的临时解决方案是在控制器中公开一个"/dbMigration&qot;API。然后在服务中实现数据库迁移。然后,我可以在需要时运行cf run-task APP_NAME -c "curl https://xxxxx.xxx.xxx/dbmigration" 来触发数据库迁移。但是我仍然需要在应用程序服务中处理dbname、user、password等,这不是我喜欢的。
提前谢谢。,那不太对。任务是附加到应用程序的资源。它会根据应用程序使用的快捷方式触发创建一个单独的容器,您设置的命令将在其中执行。任务应该有有限的生存期(即,它将运行,然后退出),而不是预期将永远运行并继续运行的应用。,任务将在配置为与应用完全相同的容器中运行,这还包括设置环境变量和绑定服务,就像您的应用一样。,第一步是您需要cf push您的Rails应用程序。当您cf push应用程序时,Ruby构建包将运行并安装运行您的应用程序所需的一切。然后,生成的快捷批处理程序将可用于运行您的应用程序或其他任务。,如果要确保任务在应用程序启动之前运行(这通常是您在数据库迁移中需要的),则会稍显棘手。,您可以这样做:,如前所述,您可以从推送您的应用程序开始。在应用程序试运行之后,您可以运行任务,该任务可以是任何命令。在您的情况下,您需要指定运行迁移的命令。,将从中运行命令的当前工作目录将是您的应用程序的根目录(即您cf pushd或cf push-p参数)。,您只能运行base image中存在的内容或已由构建包安装的内容。如果您运行的是Java构建包,您将拥有可用的Java(特别是JRE)。默认情况下不在$路径上,但您可以运行.java-buildpack/open_jdk_jre/bin/java。,例如:cf run-task my-cool-app '.java-buildpack/open_jdk_jre/bin/java -version',如果您需要其他工具,那么您可以运行多个构建包。例如,如果需要执行Javascript代码,可以运行Node.js构建包。还有一个apt-buildpack可用于安装通过APT或.deb文件提供的其他软件包。,请注意,Java构建包必须是列出的最后一个构建包。它只能作为最终生成包使用。,如前所述,当前工作目录是您推送的根目录(对于Java,它是jar/war的根目录)。因此,您可以执行java -cp . com.example.Main,其中-cp .设置类路径以包括您的类文件所在的当前目录。如果您查看Java构建包生成的命令来运行您的应用程序,它将是类似的。有$PWD/.,基本相同。,这篇关于cf run-task是否需要在运行前上传env/script?优雅的方式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册