Azure Pipelines构建失败报错:容器未运行,如何解决?
解决Azure Pipelines容器启动失败的问题
我来帮你搞定这个报错!你遇到的Container ... is not running错误,核心原因是你的Windows容器启动后立刻就退出了——Azure Pipelines需要容器保持运行状态,才能在里面执行后续的构建脚本。
问题根源
你的Dockerfile里的ENTRYPOINT设置的是一个一次性执行的PowerShell命令:
ENTRYPOINT ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
这个命令执行完没有后续的持续运行进程,容器启动后就直接停止了,Pipeline自然没法在一个已停止的容器里跑任务。
两种修复方案
方案1:修改Dockerfile,让容器持续运行
把ENTRYPOINT改成能让容器一直保持运行的命令,比如让PowerShell进入休眠状态(足够Pipeline完成所有任务就行):
FROM mcr.microsoft.com/windows/servercore:1809 # 保留你原有的配置内容 ENTRYPOINT ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; Start-Sleep -Seconds 86400"]
这里用Start-Sleep -Seconds 86400让容器休眠一天,完全能覆盖常规构建任务的时长。
方案2:在Pipeline配置中覆盖容器启动命令
如果不想修改Dockerfile,可以直接在azure-pipelines.yml里指定容器的entrypoint参数,覆盖Dockerfile的设置:
pool: vmImage: windows-2019 container: image: my-docker-container entrypoint: ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; Start-Sleep -Seconds 86400"] steps: - script: | echo 'run build script'
额外提醒
Azure Pipelines使用容器执行任务时,不管是Windows还是Linux容器,都要求容器必须处于运行状态。对于Windows容器来说,一定要确保启动命令能维持一个持续运行的进程,否则容器会直接退出,导致后续任务无法执行。
内容的提问来源于stack exchange,提问作者MakotoE
相关产品推荐
相关产品推荐

