簡體   English   中英

NodeJs + Puppeteer on Azure 應用服務運行失敗

[英]NodeJs + Puppeteer on Azure App Services fails to run

我編寫了一個簡單的NodeJs (ExpressJs) 服務器,它使用Puppeteer在傳遞給它的 JSON 數據上生成 PDF 個文件。 雖然在本地一切正常,但我正在努力在Azure App Services上運行此服務器。 我創建了一個Resource group ,在其中我創建了一個App Servces instance (在Linux上運行),該實例連接到我在Azure DevOps的存儲庫(通過Deployment Center )。

我的服務器有兩個端點:

  1. / - 返回 JSON - { status: "ok" }。 我正在使用它來驗證正在運行的服務器實例。
  2. /generate-pdf - 使用Puppeteer生成並返回一個 PDF 文件。

成功啟動App Service instance后,我能夠訪問“/”路由並獲得有效響應,但在訪問“/generate-pdf”路由時,結果是“502 - Bad Gateway”。

  1. 我的實例是否需要一些我尚未完成的額外配置?
  2. App Services不能運行Puppeteer嗎? 也許我需要使用 Azure 上的其他服務?
  3. 有沒有辦法通過Azure DevOps管道或發布來自動化該過程?

任何問題/想法/常見問題解答都非常受歡迎。 謝謝 =)

我正在回答我自己的問題:正如此處提到的https://stackoverflow.com... Azure 應用服務不允許使用 GDI(Chrome 需要),無論您使用的是 Linux 還是基於 Windows系統。 解決方案是將 NodeJs 應用程序放入 Docker 容器並手動安裝 Chrome。 擁有容器后 - 只需將其上傳到 Azure App Services 和 viola!

  • 默認情況下,App Servies 公開 80 和 443 端口,因此如果您的應用程序偵聽不同的端口,請務必通過 WEBSITES_PORT 環境變量指定它。
  • 在我的例子中,我必須將 Docker 圖像上傳到 Docker 集線器,但您也可以設置一個管道來自動執行該過程。
  • 我在我的M1 Pro上構建了 Docker 圖像,當容器上傳到 Azure 時它導致了一些拱形問題。如果您正在為 Linux 構建圖像,請務必在圖像構建步驟中添加--platform linux/amd64 .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM