我正在尝试在我的docker文件中安装一些私人gems(bitbucket git repo),并且SSH权限被拒绝
我所做的是:
args:
ssh_key: ${ssh_key}
ssh_config: ${ssh_config}
ARG ssh_key
ARG ssh_config
RUN mkdir /.sshRUN echo "${ssh_key}" > /.ssh/id_rsa
RUN echo "${ssh_config}" > /etc/ssh/ssh_config
RUN chmod 600 /.ssh/id_rsa
bundle install
我得到了错误
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
但是当我注释掉私人gem并构建图像时,将ssh放入容器中,删除id_rsa文件,然后使用文本编辑器手动粘贴主机私钥并运行chmod 600(或者只是挂载我的主机〜/ .ssh dir),那么便可以安装私有gem了。
我不知道是什么导致了错误。有没有更简单的方法可以做到这一点?
谢谢
答案 0 :(得分:1)
如果在运行docker build
之前先在主机上运行bundle package,则将拥有安装应用程序所需的所有gem文件的本地副本。然后,bundle install --local
选项将使用本地目录,而不是尝试远程获取文件。您的Dockerfile可能看起来像部分
COPY Gemfile Gemfile.lock .
COPY vendor/cache vendor/cache
RUN bundle install --frozen --local --system
这避免了您尝试使用ssh密钥进行的危险舞蹈:拥有图像的任何人都可以查看其docker history
或只运行容器并轻松获取ssh私钥。