日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了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

但我還是很困惑。我的問題是:

    軌道環境是否需要手動設置以及如何設置?我知道我們可以通過SSH運行類似sudo apt install xxx的東西,但我認為在生產中這有點奇怪。我們能不能像cf push或其他cf任務那樣,用一種更優雅的方式來做呢?

    所以我需要使用Flyway數據庫遷移,但是我們如何才能上傳腳本(作為文件)或將.sql文件保存到CF空間呢?SSH?

    我在cf空間上測試過。我只能運行java,因為它附帶一個java構建包。因此問題變成了:如何在推送的JAR中運行Java腳本(與問題2問題相同)或Java類來運行數據庫遷移?

我是CF的新手,這可能是一個非常愚蠢的問題,但我已經花了幾天的時間來研究它,還沒有得到正確的答案。我的臨時解決方案是在控制器中公開一個"/dbMigration&qot;API。然后在服務中實現數據庫遷移。然后,我可以在需要時運行cf run-task APP_NAME -c "curl https://xxxxx.xxx.xxx/dbmigration" 來觸發數據庫遷移。但是我仍然需要在應用程序服務中處理dbname、user、password等,這不是我喜歡的。
提前謝謝。

推薦答案

我被推薦使用cf run-task。經過檢查,我的理解是cf run-task是cf空間的SSH客戶端&接口,因為我們甚至可以將"echo 1"作為cf任務運行。

那不太對。任務是附加到應用程序的資源。它會根據應用程序使用的快捷方式觸發創建一個單獨的容器,您設置的命令將在其中執行。任務應該有有限的生存期(即,它將運行,然后退出),而不是預期將永遠運行并繼續運行的應用。

任務將在配置為與應用完全相同的容器中運行,這還包括設置環境變量和綁定服務,就像您的應用一樣。

    是否需要手動設置軌道環境?如何設置?我知道我們可以通過SSH運行類似sudo apt install xxx的東西,但我認為在生產中這有點奇怪。我們能不能用一種更優雅的方式,比如cf推送或者其他cf任務?

第一步是您需要cf push您的Rails應用程序。當您cf push應用程序時,Ruby構建包將運行并安裝運行您的應用程序所需的一切。然后,生成的快捷批處理程序將可用于運行您的應用程序或其他任務。

如果要確保任務在應用程序啟動之前運行(這通常是您在數據庫遷移中需要的),則會稍顯棘手。

您可以這樣做:

    運行cf push --no-start。這一論點確保了你的應用程序不會啟動。遺憾的是,這也意味著應用程序不能暫存,因此我們還無法運行任務。
    運行cf v3-packages my-cool-app(V6 Cf Cli)或cf packages my-cool-app(V7 Cf Cli)。復制最新的包GUID,如果這是您的第一次推送,將只有一個推送。
    運行cf v3-stage my-cool-app --package-guid <package-guid>(V6 Cf Cli)或cf stage my-cool-app --package-guid <package-guid>(V7 Cf Cli)。您將看到類似于cf push的輸出,它是正在運行的構建包和正在創建的液滴。輸出將顯示Packaged staged,并列出droplet guid: <guid>。復制該GUID。
    然后運行cf v3-set-droplet my-cool-app -d <droplet-guid>(V6 Cf Cli)或cf set-droplet my-cool-app -d <droplet-guid>(V7 Cf Cli)。這會將創建的液滴設置為當前活動的液滴。
    您現在可以cf run-task
    所以我需要使用Flyway數據庫遷移,但是我們如何才能上傳腳本(作為文件)或將.sql文件保存到CF空間呢?SSH?

如前所述,您可以從推送您的應用程序開始。在應用程序試運行之后,您可以運行任務,該任務可以是任何命令。在您的情況下,您需要指定運行遷移的命令。

將從中運行命令的當前工作目錄將是您的應用程序的根目錄(即您cf pushd或cf push-p參數)。

    我在cf空間上測試了一下。我只能運行java,因為它附帶一個java構建包。因此問題變成了:如何運行Java腳本(與問題2問題相同)或

您只能運行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構建包必須是列出的最后一個構建包。它只能作為最終生成包使用。

我推送的JAR中的Java類以運行數據庫遷移?

如前所述,當前工作目錄是您推送的根目錄(對于Java,它是jar/war的根目錄)。因此,您可以執行java -cp . com.example.Main,其中-cp .設置類路徑以包括您的類文件所在的當前目錄。如果您查看Java構建包生成的命令來運行您的應用程序,它將是類似的。有$PWD/.,基本相同。

這篇關于cf run-task是否需要在運行前上傳env/script?優雅的方式?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:cf run task 上傳 優雅 方式 運行
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定