我正在尝试使用此 docker 文件构建 docker 映像,并且需要从 bitbucket 克隆一些私有存储库。
FROM ubuntu
RUN chsh -s /bin/bash
RUN apt-get update
RUN apt-get install -y git python-pip
ADD private_key_for_deployment /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN echo "StrictHostKeyChecking no" >> /root/.ssh/config
RUN echo >> /root/.ssh/config
RUN echo "Host bitbucket.org" >> /root/.ssh/config
RUN cat /root/.ssh/id_rsa
RUN mkdir -p /usr/src/app/
COPY requirements.txt /usr/src/app/
RUN cat /root/.ssh/config
WORKDIR /usr/src/app/
RUN echo "IdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config
RUN eval "$(ssh-agent)" && \
ssh-add && \
ssh-add -l \
pip install -U -r requirements.txt
COPY . /usr/src/app
WORKDIR /usr/src/app/data_service/
CMD ["python" "data_service.py"]
我也尝试过没有ssh-add -l
我需要说这个密钥如果在 docker 容器内完美工作。我已经在这个容器内生成了密钥,启动了 ssh 代理并添加了身份,我可以在那里克隆存储库。
编辑1
构建 docker 镜像时会发生这种情况:
步骤 15 : RUN eval "$(ssh-agent)" && ssh-add && pip install -U -rrequirements.txt
---> 在 2b9a79fa7cf3
代理 pid 8中运行
输入 /root/.ssh/id_rsa 的密码:2015/ 07/02 22:26:46 命令 [/bin/sh -c eval "$(ssh-agent)" && ssh-add && pip install -U -rrequirements.txt] 返回一个非零代码:1
答案1
您将私钥指定为/root/.ssh/id_rsa
。该脚本是否以 root 身份运行?在这里,"IdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config
您告诉它在当前用户的主目录下查找而不是专门查找/root/.ssh/id_rsa
。它的行为就好像您传递了错误的密钥一样。
我不使用 docker,但也许这可能与您的问题有关。