Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perintah pelancaran golang tersuai pada Apl Web Azure

Perintah pelancaran golang tersuai pada Apl Web Azure

王林
王林ke hadapan
2024-02-09 12:03:081004semak imbas

Azure Web App 上的自定义 golang 启动命令

editor php Strawberry akan memperkenalkan kepada anda arahan permulaan golang tersuai pada Apl Web Azure hari ini. Azure Web App ialah perkhidmatan awan terurus yang membantu pembangun menggunakan dan menskalakan aplikasi web dengan mudah. Golang ialah bahasa pengaturcaraan cekap yang pantas, boleh dipercayai dan ringkas. Dengan menyesuaikan arahan permulaan golang, pembangun boleh mengawal proses permulaan aplikasi web dengan lebih baik dan mencapai fungsi yang lebih diperibadikan. Artikel ini akan memperkenalkan secara terperinci cara mengkonfigurasi dan menggunakan perintah permulaan golang tersuai pada Apl Web Azure untuk membantu pembangun menggunakan ciri ini dengan lebih baik.

Kandungan soalan

Saya cuba menggunakan apl web go dengan tindakan github ke perkhidmatan aplikasi azure. Keseluruhan penggunaan berjaya sehingga aplikasi perlu digunakan menggunakan azure/webapps-deploy@v2 .

Untuk melihat apa masalahnya, saya mencipta aplikasi ujian go 'hello world' yang mudah. Hanya gunakan aplikasi yang sangat mudah ini dan anda boleh pergi. Walau bagaimanapun, semasa cuba menggunakan aplikasi ujian, saya melihat sesuatu:

  • Apl ini dibina semula sepenuhnya pada azure dan bukannya menggunakan boleh laku untuk dijalankan. Fail penempatan saya sebelum ini kelihatan seperti ini:
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: .

Tiada masalah dengan penempatan ini. Aplikasi Codebase dimasukkan ke dalam Azure Web Apps. Apabila saya cuba menggunakan boleh laku dalam langkah terakhir, penggunaan gagal. Sudah tentu, aplikasi web azure mempunyai medan tersuai untuk menetapkan arahan pelancaran. Saya cuba menetapkannya kepada ./main untuk menjalankan boleh laku semasa permulaan, tetapi ini masih gagal.

with:
          app-name: ${{ env.azure_webapp_name }}
          slot-name: 'production'
          publish-profile: ${{ secrets.azureappservice_publishprofile }}
          package: main

Apabila membina apl go pada mesin tempatan saya menggunakan go build main.go dan kemudian melaksanakan go build main.go 在我的本地计算机上构建 go 应用程序,然后执行 ./main apl berjalan tanpa masalah.

  • Memandangkan saya tidak boleh hanya melaksanakan boleh laku daripada langkah sebelumnya, saya memutuskan untuk berundur dan membenarkan Azure App Service melaksanakan apl pergi seperti sedia ada. Jika ya, keseluruhan langkah binaan tidak lagi diperlukan dan anda boleh menolak kod tersebut ke perkhidmatan web biru. Seperti ini:
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: .

Walaupun terpaksa menolak keseluruhan pangkalan kod, ia masih berfungsi dengan baik. Walau bagaimanapun, dalam aplikasi pengeluaran kami, atas sebab struktur, fail main.go tidak terletak dalam direktori akar. Untuk meniru tingkah laku ini, saya meletakkan fail main.go dalam direktori /cmd. Penggunaan apl web azure gagal lagi. Seseorang boleh meneka bahawa ini mungkin disebabkan oleh azure tidak dapat mencari fail main.go. Saya mahu menggunakan arahan pelancaran sekali lagi, tetapi kali ini menggunakan go 运行 cmd/main.go. Malangnya, ini juga tidak berfungsi.

apl web azure menunjukkan semua yang dibina semasa menjalankan saluran paip:

Ada cadangan? Apa yang saya hilang di sini?

Adakah terdapat sebarang penyelesaian tentang cara memuat naik boleh laku yang dibuat dalam langkah sebelumnya untuk apl web azure dan menjalankan boleh laku di sana?

Penyelesaian

Pertama, anda harus menetapkan pembolehubah persekitaran dalam apl web azure anda: website_run_from_package1. Ini menghalang binaan daripada berjalan pada Azure lagi. Mulai saat ini, anda sepatutnya boleh memuat naik boleh laku pra-bina.

Saya juga terpaksa menyediakan arahan pelancaran untuk menjalankan boleh laku khusus saya.

Selepas melakukan ini, saya melihat perkara berikut dalam log untuk 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)

Versi muncul glibc_2.34 是因为该应用程序是使用 ubuntu-latest 在管道中构建的。这是 ubuntu-22.04,其中有 glibc_2.35 但要运行的 azure 计算机没有此版本。使用 ubuntu-20.04 版本 glibc_2.31 Bina dan jalankan dengan sempurna.

Atas ialah kandungan terperinci Perintah pelancaran golang tersuai pada Apl Web Azure. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam