[英]How to build docker to run Python3 from Node.js child_process in Google App Engine?
[英]Google App Engine Standard Node JS how to run build script?
Node 的 GAE 標准是否支持構建腳本的方法? 我嘗試在 package.json 中使用 postinstall ,但沒有用。
我的代碼庫在子目錄中有包含package.json
的子目錄。 在我的根package.json
有
scripts: {
postinstall: cd vendor && npm install
....
}
但是我沒有看到安裝任何供應商軟件包,所以我傾向於相信 postinstall 不會在 GAE Node 標准上觸發。
有什么方法可以讓我安裝子目錄依賴項而不必將我所有的vendor/package.json
依賴項復制並粘貼到根目錄?
注意:我也試過在 package.json 腳本中放置一個“安裝”,但這似乎也沒有被觸發。
在 GAE 標准中,依賴項的安裝是自動管理的。 您應該將它們添加到您的package.json
。
正如谷歌文檔所提到的:
部署應用程序時,Node.js 運行時會使用 npm install 命令自動安裝 package.json 文件中聲明的所有依賴項。
{
"dependencies": {
"lodash": "^4.0.1"
}
}
安裝將在應用程序部署期間通過:
gcloud app deploy
要添加構建步驟,請運行以下命令:
gcloud beta app gen-config --custom
這將生成運行的默認 dockerfile 和配置。 在您的 .dockerfile 中,添加您的構建步驟:
RUN npm run build --unsafe-perm || \
((if [ -f npm-debug.log ]; then \
cat npm-debug.log; \
fi) && false)
"prestart": "if [ ! -d build ]; then npm run build; fi",
“-d build”這里是構建過程生成的文件夾,將其替換為您實際使用的任何內容。
不確定這是否適用於您的情況,但似乎 GAE 標准增加了運行自定義構建步驟的能力。
但是它確實指出:
執行您的自定義構建步驟后,App Engine 通過僅安裝在您的
package.json
文件的依賴項字段中聲明的生產dependencies
移除並重新生成node_modules
文件夾。
也許因為node_modules
在您的vendor/
目錄中,GAE 可能無法檢測並刪除它們,從而實現您的目標。 這是一個預安裝步驟,與腳本中指定的postinstall
不同。 不確定是否重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.