Я пытаюсь развернуть его из своего каталога 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 }}
Код: Выделить всё
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
Код: Выделить всё
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.
Код: Выделить всё
ModuleNotFoundError: No module named 'pyodbc'
Большое спасибо за уделенное время. !
Как упоминалось в предыдущем сообщении, я попытался установить модуль pyodbc и зависимость unixodbc, но все еще сталкиваюсь с той же ошибкой.
Я также пробовал использовать конвейеры, предоставленные Azure, но они тоже не увенчались успехом. Я искал информацию об этой ошибке и способах ее устранения в официальной документации, но мне не удалось решить проблему.
ОБНОВЛЕНИЕ 1:
В итоге мне удалось развернуть веб-приложение благодаря вашей помощи и официальной документации Azure. Я добавил:
Код: Выделить всё
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
working-directory: ./app
Я также установил переменную SCM_DO_BUILD_DURING_DEPLOYMENT = 1 в файле конфигурации инфраструктуры Terraform. Этот параметр гарантирует, что процесс сборки запускается во время развертывания в Службе приложений Azure.
Подробнее здесь: https://stackoverflow.com/questions/789 ... ub-actions