Docker Compose构建时Poetry Install出现Dulwich SSH权限错误
Docker Compose构建时SSH权限拒绝问题解决
问题场景
执行docker-compose build时,包含--mount=type=ssh的RUN指令失败,核心报错:
git@github.com: Permission denied (publickey).
本地执行ssh -T git@github.com可正常返回,但构建容器内无法通过SSH访问GitHub私有仓库。
排查与解决步骤
确保启用BuildKit
--mount=type=ssh依赖Docker BuildKit,构建时需指定环境变量:DOCKER_BUILDKIT=1 docker-compose build也可以在docker-compose.yml中全局开启BuildKit:
version: '3.8' services: # ... 你的服务配置 x-buildkit: &buildkit features: buildkit: true配置Docker Compose的SSH转发
在docker-compose.yml的build部分添加ssh配置,让构建过程使用本地SSH代理的密钥:services: your-service-name: build: context: . ssh: - default # 映射本地SSH代理的默认密钥到构建容器内确认本地SSH代理运行并加载密钥
检查SSH代理状态,若未运行则启动并添加私钥:# 检查代理是否运行 echo $SSH_AUTH_SOCK # 启动代理(若未运行) eval $(ssh-agent -s) # 添加私钥到代理 ssh-add ~/.ssh/id_rsa # 替换为你的私钥路径验证容器内SSH连接
在Dockerfile中添加测试指令,先确认SSH连接正常再执行poetry安装:RUN --mount=type=ssh ssh -T git@github.com RUN --mount=type=ssh poetry install $(if [ "$build_env" = 'production' ]; then echo '--only main --extras=production'; fi) --no-interaction --no-ansi检查本地私钥权限
私钥权限必须为600,否则SSH会拒绝使用:chmod 600 ~/.ssh/id_rsa
内容的提问来源于stack exchange,提问作者Headmaster
相关产品推荐
相关产品推荐

