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

如何在DDEV Docker容器中配置SSH密钥以拉取BitBucket依赖?

解决Docker容器内Composer拉取BitBucket私有依赖的SSH密钥问题

方法一:挂载本地SSH密钥目录到容器

这是最直接的方式,将本地有权限访问BitBucket的SSH密钥挂载到容器内对应用户目录:

  1. 本地先验证密钥有效性:执行ssh git@bitbucket.org,确认能成功连接(首次连接需输入yes确认主机密钥)。
  2. 运行容器时挂载密钥目录与代码目录,进入容器终端:
docker run -it -v ~/.ssh:/root/.ssh -v $(pwd):/app -w /app your-php-composer-image bash
  • -v ~/.ssh:/root/.ssh:将本地SSH密钥目录挂载到容器root用户的.ssh目录
  • -v $(pwd):/app -w /app:将当前代码目录挂载到容器/app并设为工作目录(按需调整)
  1. 进入容器后,添加BitBucket主机密钥到已知列表(避免Composer执行时的交互式确认):
ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
  1. 执行Composer安装:
composer install

如果用Docker Compose,在docker-compose.yml中配置:

services:
  app:
    image: your-php-composer-image
    volumes:
      - ~/.ssh:/root/.ssh
      - .:/app
    working_dir: /app
    environment:
      - COMPOSER_ALLOW_SUPERUSER=1 # 可选,跳过Composer超级用户权限提示

方法二:使用SSH代理转发(更安全)

通过本地SSH代理转发密钥,容器不会直接持有密钥文件,仅通过套接字使用代理:

  1. 本地启动并配置SSH代理:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
  1. 运行容器时挂载SSH代理套接字:
docker run -it -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent -v $(pwd):/app -w /app your-php-composer-image bash
  1. 添加BitBucket主机密钥:
ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
  1. 执行composer install即可。

方法三:临时复制密钥到容器(应急用,不推荐)

仅用于临时操作,用完需立即删除密钥避免泄露:

  1. 复制本地密钥到运行中的容器:
docker cp ~/.ssh/id_rsa <容器ID或名称>:/root/.ssh/id_rsa
  1. 进入容器并设置密钥权限(SSH要求密钥权限为600):
docker exec -it <容器ID或名称> bash
chmod 600 /root/.ssh/id_rsa
  1. 添加BitBucket主机密钥后执行composer install,完成后删除密钥:
rm /root/.ssh/id_rsa

注意事项

  • 确保容器内已安装openssh-client:Debian/Ubuntu系执行apt-get update && apt-get install -y openssh-client,Alpine系执行apk add openssh-client。
  • 若容器使用非root用户,需将SSH目录挂载到对应用户的主目录(如/home/www-data/.ssh),并调整目录/文件权限。
  • 禁止将SSH密钥打包进Docker镜像,会引发密钥泄露风险。

内容的提问来源于stack exchange,提问作者DieselHashtag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:08:19