通过Dockerfile安装bundle时出错

时间:2017-10-12 13:15:47

标签: git docker ssh bundler git-clone

我是Docker的新手。我试图在ubuntu图像上安装bundle作为父图像。

这是我的Dockerfile的样子 -

FROM ubuntu
RUN apt-get update 
RUN apt-get update && apt-get install -y curl
RUN apt-get remove -y openssh-client
RUN apt-get autoclean && apt-get update && apt-get install -y openssh-
server 
#INSTALL ESSESNTIAL PACKAGES 
#RUN apt-get -y install zsh htop
RUN DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server
#RUN curl -sSL https://rvm.io/mpapis.asc | gpg --import -
RUN apt-get install -y software-properties-common
RUN apt-add-repository -y ppa:rael-gc/rvm
RUN apt-get update && apt-get install -y rvm 
RUN /bin/bash -l -c "rvm install ruby-2.2.3" 
ENV app /app
RUN mkdir $app
WORKDIR $app
ADD . $app

#RUN ssh-keygen -f id_rsa -t rsa -N ''
#RUN mkdir /root/.ssh
#RUN ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
RUN /bin/bash -l -c "gem install bundler"
RUN /bin/bash -l -c "bundle -v"
RUN apt-get update && apt-get install -y git
RUN /bin/bash -l -c "bundle install"

在运行此Dockerfile时,我在bundle install命令时收到错误,我收到错误Host key verification failed. fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists. 我尝试使用交互模式运行bundle install命令,但我也遇到了类似的错误。请帮我解决这个问题,我已经被禁止了一段时间了。

此外,当我在进行一些更改后构建图像时,在docker镜像上不再出现ssh-keys。当我退出交互模式并再次登录时,同样发生,当我再次登录时,我新添加的包不会显示。我尝试提交更改,但问题仍然存在。我无法弄清楚为什么会这样。

1 个答案:

答案 0 :(得分:0)

bundle install需要访问私人回购时,这种错误很常见 例如,请参阅docker-library/golang issue 33

  

另一种方法是在私钥和公钥中进行COPY,该私钥和公钥可以访问有问题的存储库。这不太安全,因为密钥将永远嵌入在该图像中(即使在稍后的RUN中被删除),它们也不会被删除,只是"隐藏"在该文件系统层中,但如果从较低图像层运行容器,则仍可访问。

因此,要进行测试,请取消注释您的行并添加

COPY yourPrivateKey /root/.ssh/id-rsa
COPY yourPublicKey /root/.ssh/id-rsa

另见" How to cache bundle install with Docker"

您应先RUN bundle install,然后ADD . $app