php小編草莓今天為大家介紹Azure Web App上的自訂golang啟動指令。 Azure Web App是一種託管的雲端服務,可協助開發者輕鬆部署和擴充Web應用程式。而golang是一種高效率的程式語言,具有快速、可靠和簡潔的特性。透過自訂golang啟動命令,開發者可以更好地控制網路應用程式的啟動過程,實現更多個人化的功能。本文將詳細介紹如何在Azure Web App上進行自訂golang啟動命令的設定和使用,幫助開發者更好地利用這項功能。
我正在嘗試將帶有 github 操作的 go web 應用程式部署到 azure 應用程式服務。整個部署成功,直到應用程式需要使用 azure/webapps-deploy@v2
進行部署。
為了查看問題出在哪裡,我創建了一個簡單的 go 'hello world' 測試應用程式。只需部署這個非常簡單的應用程式就可以了。然而,在嘗試部署測試應用程式時,我注意到了一些事情:
name: go deployment on: push: branches: [ "master" ] pull_request: branches: [ "master" ] jobs: build: runs-on: ubuntu-latest environment: production steps: # checkout the repo - uses: actions/checkout@master # setup go - name: setup go uses: actions/setup-go@v3 with: go-version: '1.20' - run: go version # install dependencies - name: go build working-directory: . run: | go build - name: upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: go-app path: . deploy: runs-on: ubuntu-latest needs: build environment: name: 'production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: - name: download artifact from build job uses: actions/download-artifact@v3 with: name: go-app - name: 'deploy to azure web app' id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ env.azure_webapp_name }} slot-name: 'production' publish-profile: ${{ secrets.azureappservice_publishprofile }} package: .
這部署沒有問題。程式碼庫應用程式被饋送到 azure web 應用程式。當我嘗試在最後一步中使用可執行檔時,部署失敗。當然,azure web app 有一個用於設定啟動命令的自訂欄位。我嘗試將其設置為 ./main
以在啟動時運行可執行文件,但這仍然失敗。
with: app-name: ${{ env.azure_webapp_name }} slot-name: 'production' publish-profile: ${{ secrets.azureappservice_publishprofile }} package: main
當使用 go build main.go
在我的本地電腦上建立 go 應用程序,然後執行 ./main
時,該應用程式運行沒有問題。
name: Go on: push: branches: [ "master" ] pull_request: branches: [ "master" ] jobs: build: runs-on: ubuntu-latest environment: name: 'Production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: # checkout the repo - uses: actions/checkout@master - name: 'Deploy to Azure Web App' id: deploy-to-webapp uses: azure/webapps-deploy@v2 with: app-name: ${{ env.AZURE_WEBAPP_NAME }} slot-name: 'Production' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE }} package: .
儘管必須推送整個程式碼庫,但它仍然運作得很好。然而,在我們的生產應用程式中,由於結構原因,main.go 檔案不位於根目錄中。為了模仿這種行為,我將 main.go 檔案放置在 /cmd 目錄下。 azure web app 的部署再次失敗。可以猜測,這可能是由於 azure 無法找到 main.go 檔案。我想再次使用啟動命令,但這次使用 go 運行 cmd/main.go
。可悲的是,這也不行。
azure web apps 顯示運行管道時建立的所有內容:
有什麼建議嗎?我在這裡缺少什麼?
關於如何將上一步中創建的可執行文件上傳到 azure web app 並在那裡運行該可執行文件,有什麼解決方案嗎?
首先,您應該在 azure web app 中設定一個環境變數:website_run_from_package
到 1
。這可以防止再次在 azure 上運行建置。從這一刻起,您應該能夠上傳預先建置的可執行檔。
#執行此操作後,我在 https://appname- 的日誌中看到以下內容here.scm.azurewebsites.net/api/logstream
#2023-04-26T17:20:12.596331026Z Detecting platforms... 2023-04-26T17:20:12.805572634Z Could not detect any platform in the source directory. 2023-04-26T17:20:15.792565274Z Running /home/site/wwwroot/go-test now 2023-04-26T17:20:15.928193597Z /home/site/wwwroot/go-test: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.32' not found (required by /home/site/wwwroot/go-test) 2023-04-26T17:20:15.934491135Z /home/site/wwwroot/go-test: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.34' not found (required by /home/site/wwwroot/go-test)
出現版本 glibc_2.34
是因為該應用程式是使用 ubuntu-latest 在管道中建構的。這是 ubuntu-22.04,其中有 glibc_2.35
但要運行的 azure 計算機沒有此版本。使用 ubuntu-20.04
版本 glibc_2.31
建置即可完美運作。
以上是Azure Web App 上的自訂 golang 啟動指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!