В настоящее время я развертываю приложение Python flask в веб-приложении Azure, и когда я развертываю его вручную через VSCode, оно работает, но когда я развертываю его через Azure DevOps, оно не работает. Я создал конвейер выпуска, который запускает файл require.txt, а также архивирует файл, а затем конвейер выпуска, который развертывает приложение в веб-приложении.
Когда я смотрю на куду в веб-приложении, я вижу, что файлы развернуты, но приложение не запускается. Я предполагаю, что когда я развертываю его через VSCode, он создает антенну, а также развертывает пакет как zip-файл, а не как отдельные файлы, но когда я развертываю его через Azure DevOps, он развертывает все файлы по отдельности. Ниже я прикрепил фотографии своего трубопровода.
🤔 А знаете ли вы, что...
В Python можно легко работать с базами данных, такими как SQLite и MySQL.
Чтобы проверить эту проблему, я создал простое приложение Python flask и развернул его в веб-приложении Azure. Это работает без проблем. Ниже приведен мой код и шаги.
my_flask_app
: приложение.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
требования.txt:
blinker==1.8.2
click==8.1.7
colorama==0.4.6
Flask==3.0.3
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==2.1.5
Werkzeug==3.0.4
start.txt: (Файл start.txt используется для указания команды, которую следует выполнить для запуска приложения Flask при его развертывании в Azure.)
"gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:app"
Создайте конвейер YAML:
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
addToPath: true
- script: |
cd "$(Build.SourcesDirectory)/my_flask_app"
python -m venv antenv
source antenv/bin/activate
pip install -r requirements.txt
displayName: 'Install dependencies'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.SourcesDirectory)/my_flask_app'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
- publish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
Релизный конвейер:
Test result:
Убедитесь, что команда запуска вашего приложения Flask установлена правильно.