gpt4 book ai didi

python - 保持azure管道作业中的postgres docker容器运行

转载 作者:行者123 更新时间:2023-12-03 02:13:44 25 4
gpt4 key购买 nike

我对 Azure 相当陌生,目前正在研究管道。我的目标是在后台运行 postgres alpine docker 容器,这样我就可以通过我的 python 后端执行测试。

这是我的管道配置

trigger:
- main
pool:
vmImage: ubuntu-latest
variables:
POSTGRE_CONNECTION_STRING: postgresql+psycopg2://postgres:passw0rd@localhost/postgres
resources:
containers:
- container: postgres
image: postgres:13.6-alpine
trigger: true
env:
POSTGRES_PASSWORD: passw0rd
ports:
- 1433:1433
options: --name postgres
stages:
- stage: QA
jobs:
- job: test
services:
postgres: postgres
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: $(PYTHON_VERSION)
- task: Cache@2
inputs:
key: '"$(PYTHON_VERSION)" | "$(Agent.OS)" | requirements.txt'
path: $(PYTHON_VENV)
cacheHitVar: 'PYTHON_CACHE_RESTORED'
- task: CmdLine@2
displayName: Wait for db to start
inputs:
script: |
sleep 5
- script: |
python -m venv .venv
displayName: create virtual environment
condition: eq(variables.PYTHON_CACHE_RESTORED, 'false')
- script: |
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: pip install
condition: eq(variables.PYTHON_CACHE_RESTORED, 'false')
- script: |
source .venv/bin/activate
python -m pytest --junitxml=test-results.xml --cov=app --cov-report=xml tests
displayName: run pytest
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: 'test-results.xml'
testRunTitle: 'Publish FastAPI test results'
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: 'coverage.xml'

但是管道总是在“初始化容器”步骤失败,并给出以下错误: Error response from daemon: Container <containerID> is not running就好像它只是因为无事可做而关闭一样。这似乎是正确的,但我不知道如何保持它运行直到我的测试完成,后端只是针对数据库运行 pytest 。我还尝试使用 container 将该资源添加为容器属性,但随后管道在同一步骤崩溃,表示容器只运行了不到一秒。

感谢您的任何想法!

最佳答案

我怀疑你的容器没有停止,因为“没有什么可做的”,postgres 图像被配置为充当服务。您的容器可能由于错误而停止。

我确信还有一些需要改进的地方:您必须将 PGPORT 环境变量添加到您的容器中并设置为 1433,因为该端口不是默认端口对于 postgres docker 镜像,因此像使用 ports 一样打开容器上的端口在这种情况下并不会做太多事情。

此外,您的 trigger: true 属性意味着您期待 postgres 的官方 DockerHub 存储库上的更新,并且如果有新镜像发布,请运行您的管道。我认为这没有多大意义,你应该删除它,以防万一,尽管从你的问题的角度来看这是边缘问题。

关于python - 保持azure管道作业中的postgres docker容器运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72258372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com