You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:12:47