Развертывание приложения Python в Службе приложений Azure с помощью действий GithubPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Развертывание приложения Python в Службе приложений Azure с помощью действий Github

Сообщение Anonymous »

Я столкнулся с проблемой при развертывании веб-приложения Python в Службе приложений Azure с помощью CI/CD с действиями GitHub. Цель состоит в том, чтобы приложение подключилось к серверной части Azure SQL для выполнения запросов, но развертывание не работает должным образом.
Я пытаюсь развернуть его из своего каталога GitHub с помощью действий, и Я добавил секретный secrets.AZURE_WEBAPP_PUBLISH_PROFILE с содержимым из файла профиля публикации Службы приложений Azure.
Структура моего репозитория GitHub следующая:

Код: Выделить всё

/python-app$
.
├── app
│   ├── app.py
│   ├── requirements.txt
│   ├── static
│   │   └── styles.css
│   └── templates
│       ├── index.html
│       └── welcome.html
├── terraform-infra
Вот конвейер, который я создал

Код: Выделить всё

name: Build and Deploy Python App to Azure Web App
on:
push:
branches:
- main
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python version
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install unixodbc
run: sudo apt-get install -y unixodbc

- name: Create and activate virtual environment
run: |
python -m venv venv
source venv/bin/activate

- name: Install dependencies
run: pip install -r app/requirements.txt

- name: Compress artifact for deployment
run: zip release.zip ./app/* -r

- name: Upload artifact for deployment jobs
uses: actions/upload-artifact@v4
with:
name: python-app
path: |
release.zip
!venv/

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@v4
with:
name: python-app

- name: Unzip artifact for deployment
run: |
unzip release.zip
mv app/* .

- name: 'Deploy to Azure Web App'
uses: azure/webapps-deploy@v3
id: deploy-to-webapp
with:
app-name: 'python-app-mario'
slot-name: 'production'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

requirements.txt

Код: Выделить всё

bcrypt==4.2.0
blinker==1.8.2
click==8.1.7
Flask==3.0.3
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==2.1.5
pyodbc==5.1.0
Werkzeug==3.0.4
app.py

Код: Выделить всё

database = os.getenv("database")
password = os.getenv("password")
server = os.getenv("server")
user = os.getenv("user")
driver= '{ODBC Driver 17 for SQL Server}'

# Connecting to SQL server
conexion = pyodbc.connect(f"DRIVER={driver};SERVER={server};DATABASE={database};UID={user};PWD={password}")
После развертывания конвейера я пытаюсь получить доступ к приложению и вижу следующее сообщение об ошибке:

Код: Выделить всё

: ( Application Error If you are the application administrator, you can access the diagnostic resources.
Кроме того, в журналах отображается следующая ошибка, указывающая на то, что pyodbc < strong>модуль не найден. Однако я добавил его в файл requirements.txt и установил его зависимости в соответствии с файлом.

Код: Выделить всё

ModuleNotFoundError: No module named 'pyodbc'
Я искал информацию об этой проблеме, но не знаю, как ее решить.
Большое спасибо за уделенное время. !
Как упоминалось в предыдущем сообщении, я попытался установить модуль pyodbc и зависимость unixodbc, но все еще сталкиваюсь с той же ошибкой.
Я также пробовал использовать конвейеры, предоставленные Azure, но они тоже не увенчались успехом. Я искал информацию об этой ошибке и способах ее устранения в официальной документации, но мне не удалось решить проблему.
ОБНОВЛЕНИЕ 1:
В итоге мне удалось развернуть веб-приложение благодаря вашей помощи и официальной документации Azure. Я добавил:

Код: Выделить всё

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
working-directory: ./app
При этом зависимости устанавливаются в определенную папку в каталоге приложения, гарантируя, что пакет развертывания включает необходимые пакеты Python для запуска приложения в Azure.
Я также установил переменную SCM_DO_BUILD_DURING_DEPLOYMENT = 1 в файле конфигурации инфраструктуры Terraform. Этот параметр гарантирует, что процесс сборки запускается во время развертывания в Службе приложений Azure.

Подробнее здесь: https://stackoverflow.com/questions/789 ... ub-actions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»