Azure DevOps中Docker Compose版本兼容问题及COMPOSE_API_VERSION设置咨询
问题
此前Azure DevOps流水线中使用DockerCompose@0任务运行服务一直正常,昨日起突然报错:
The current Compose file version is not compatible with your engine version. Please upgrade your Compose file to a more recent version, or set a COMPOSE_API_VERSION in your environment.
流水线配置如下:
- task: DockerCompose@0 displayName: Run services inputs: containerregistrytype: 'Container Registry' dockerComposeFile: 'build/docker/docker-compose.yml' dockerComposeFileArgs: 'DOCKER_BUILD_SOURCE=$(System.DefaultWorkingDirectory)' action: 'Run services' buildImages: false
docker-compose.yml内容(细节已修改):
version: '3.0' services: sqlserver: image: willh/mssql-server-windows-developer:latest container_name: sqlserver shm_size: 4gb ports: - "1433:1433" environment: - ACCEPT_EULA=Y - SA_PASSWORD=a(!)Passcode
经排查,问题出在微软构建代理镜像更新:从包含Docker 20.10.23、Docker Compose v1 1.29.2的版本(20230129.1)升级到包含Docker 23.0.0的版本(20230206.1)后触发报错,咨询需设置哪个COMPOSE_API_VERSION才能恢复正常运行?
解决方案
针对Docker 23.0.0版本,需设置COMPOSE_API_VERSION=1.43来适配现有的docker-compose.yml 3.0版本。
有两种可行的处理方式:
- 方式一:在流水线任务中添加环境变量
修改DockerCompose@0任务配置,增加环境变量声明:
- task: DockerCompose@0 displayName: Run services inputs: containerregistrytype: 'Container Registry' dockerComposeFile: 'build/docker/docker-compose.yml' dockerComposeFileArgs: 'DOCKER_BUILD_SOURCE=$(System.DefaultWorkingDirectory)' action: 'Run services' buildImages: false env: COMPOSE_API_VERSION: '1.43'
- 方式二:升级docker-compose.yml版本(更推荐)
将docker-compose.yml中的version: '3.0'升级为version: '3.8'——这是Docker Compose v1支持的最高版本,同时完全兼容Docker 23.0.0,无需依赖环境变量即可解决兼容问题。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

