如何在azure资源上部署和运行python脚本?



我是DevOps的新手,所以这可能是一个非常愚蠢的问题。我试图部署一个python Web抓取脚本到azure Web应用程序使用GitHub的行动。这个脚本意味着要运行很长一段时间,因为它是分析网站一个字一个字数小时。然后将结果记录到.log文件中。

我知道一点GitHub的动作是如何工作的,我知道当我推送到repo时,我可以触发工作。然而,我有点困惑的是如何运行应用程序或脚本上的azure资源(如虚拟机或web应用程序)为例。这个过程是否涉及ssh到资源中,然后自动运行cli命令"python main.py"或者"docker-compose up",或者还有更复杂的东西?

为了更好的上下文,这是我的脚本在我的工作流文件夹:

on:
[push]
env:
AZURE_WEBAPP_NAME: emotional-news-service # set this to your application's name
WORKING_DIRECTORY: '.'         # set this to the path to your path of working directory inside GitHub repository, defaults to the repository root
PYTHON_VERSION: '3.9' 
STARTUP_COMMAND: 'docker-compose up --build -d'           # set this to the startup command required to start the gunicorn server. default it is empty
name: Build and deploy Python app
jobs:
build-and-deploy:
runs-on: ubuntu-latest
environment: dev
steps:
# checkout the repo 
- uses: actions/checkout@master
# setup python
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: ${{ env.PYTHON_VERSION }}
# setup docker compose
- uses: KengoTODA/actions-setup-docker-compose@main
with:
version: '1.26.2'
# install dependencies
- name: python install
working-directory: ${{ env.WORKING_DIRECTORY }}
run: |
sudo apt install python${{ env.PYTHON_VERSION }}-venv
python -m venv --copies antenv
source antenv/bin/activate
pip install setuptools
pip install -r requirements.txt
python -m spacy download en_core_web_md
# Azure login
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/appservice-settings@v1
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
mask-inputs: false
general-settings-json: '{"linuxFxVersion": "PYTHON|${{ env.PYTHON_VERSION }}"}' #'General configuration settings as Key Value pairs'
# deploy web app
- uses: azure/webapps-deploy@v2
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.WORKING_DIRECTORY }}
startup-command: ${{ env.STARTUP_COMMAND }}
# Azure logout
- name: logout
run: |
az logout

上面的大部分脚本取自:https://github.com/Azure/actions-workflow-samples/blob/master/AppService/python-webapp-on-azure.yml.

env。startup_命令SSH,然后运行命令是我想的那部分,还是完全是别的东西?

我还有另一个问题:有没有更好的方法来查看从azure资源内运行的python脚本的日志?我能想到的唯一方法就是ssh登录,然后输入"cat 'whatever.log'"

提前感谢!

可以使用启动文件名代替STARTUP_COMMAND: 'docker-compose up --build -d'

startUpCommand: 'gunicorn --bind=0.0.0.0 --workers=4 startup:app'

StartupCommand: 'startup.txt'

StartupCommand参数在startup.py文件中定义应用程序。默认情况下,Azure应用服务在名为App .pyapplication.py的文件中查找Flask应用对象。如果您的代码不遵循此模式,则需要自定义启动命令。Django应用可能根本不需要定制。有关更多信息,请参见如何在Azure应用程序服务上配置Python -自定义启动命令。

另外,因为python- vcode -flask-tutorial存储库在名为startup.txt的文件中包含相同的启动命令,您可以在StartupCommand参数中指定该文件,而不是使用StartupCommand: 'startup.txt'

更多信息请参考此处

相关内容

  • 没有找到相关文章

最新更新