我在github中有一个私有ruby gem,我在另一个存储库中使用,所以当我构建docker容器并尝试执行bundle install时,我收到以下错误:
主机密钥验证失败。致命:无法从远程读取 库中。
我已检查过我的用户是否有权阅读此gem。 我使用的命令是:
docker build \
-t quay.io/org/${APP}:${VERSION} \
.
我的Dockerfile就是这个简单的文件:
FROM ruby:2.4.2-onbuild
ENTRYPOINT ["./entrypoint.sh"]
在entrypoint.sh文件的位置执行此操作:
bundle exec ruby runner.rb
我想不知怎的,我需要将用户和ssh-key传递到容器中,但我无法弄清楚如何。
答案 0 :(得分:0)
无需将密钥共享或推送到容器中。也许this answer可以帮助您继续。
答案 1 :(得分:0)
因为这个问题好像没有人回答过,我在这里补充一下-
将此添加到 Dockerfile 的开头:
FROM ruby:2.5.8
RUN git config --global url."https://github.com/".insteadOf 'git@github.com:'
说明: Bundle 使用 git 来验证它正在安装的 gem 的来源,我们不想使用 ssh 作为通信方式来执行此操作。否则,您需要 docker 容器中的私钥才能通过 ssh 进行通信。如果您打算与任何人共享私钥,您希望避免将私钥复制到容器中。而且,这样做更简单。
现在您应该能够像这样在构建步骤中运行 bundle install:
FROM ruby:2.5.8
RUN git config --global url."https://github.com/".insteadOf 'git@github.com:'
WORKDIR /app
COPY Gemfile Gemfile.lock /app/
RUN bundle install