Bitbucket Pipeline部署ECS服务遇docker-compose报错求助
问题:Bitbucket Pipeline部署ECS服务时docker-compose报错
我正尝试通过Bitbucket Pipeline部署ECS服务,但遇到报错。已尝试更新Docker、pip、docker-compose,但问题仍未解决。
当前版本
- docker-compose: 1.29.2
- pip: 23.3.1
- docker: latest
Bitbucket Pipeline YAML配置
name: "Deployment" services: - docker caches: - node - docker script: - pip install awscli docker-compose - docker-compose --version - aws configure set aws_access_key "${AWS_ACCESS_KEY}" - aws configure set aws_secret_key "${AWS_SECRET_KEY}" - docker-compose -f ./docker/docker-compose.stg.yml build - eval $(aws ecr get-login --no-include-email --region us-east-1 | sed 's;https://;;g') - docker push ${DOCKER_REGISTRY}/dashboard-service:stg - aws ecs update-service --cluster new-services --service dashboard-service --force-new-deployment
错误信息
+ docker-compose -f ./docker/docker-compose.stg.yml build Traceback (most recent call last): File "/usr/local/bin/docker-compose", line 8, in <module> sys.exit(main()) File "/usr/local/lib/python3.8/site-packages/compose/cli/main.py", line 81, in main command_func() File "/usr/local/lib/python3.8/site-packages/compose/cli/main.py", line 200, in perform_command project = project_from_options('.', options) File "/usr/local/lib/python3.8/site-packages/compose/cli/command.py", line 60, in project_from_options return get_project( File "/usr/local/lib/python3.8/site-packages/compose/cli/command.py", line 152, in get_project client = get_client( File "/usr/local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 41, in get_client client = docker_client( File "/usr/local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 124, in docker_client kwargs = kwargs_from_env(environment=environment, ssl_version=tls_version) TypeError: kwargs_from_env() got an unexpected keyword argument 'ssl_version'
解决方法
这个错误是因为docker-compose 1.29.2与最新版的Docker SDK不兼容——新版本的kwargs_from_env()函数已移除ssl_version参数,而旧版docker-compose仍在调用该参数。
方案1:锁定兼容的Docker SDK版本
修改Pipeline脚本中的pip安装命令,指定与docker-compose 1.29.2兼容的Docker SDK版本(比如4.4.4):
pip install awscli docker-compose docker==4.4.4
方案2:升级到docker-compose v2版本
docker-compose v2已整合进Docker CLI,兼容性更好。替换脚本中的pip安装步骤为直接下载二进制文件:
curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
之后脚本中的docker-compose命令可改为docker compose(v2标准语法)。
方案3:使用Bitbucket官方Docker镜像
尝试切换到Bitbucket提供的预配置Docker镜像,避免依赖版本冲突。比如在Pipeline中指定image: atlassian/default-image:3,该镜像已预装兼容版本的docker和docker-compose。
内容的提问来源于stack exchange,提问作者Fazalulla
相关产品推荐
相关产品推荐

