【问题标题】:Private Github repositories in dockerized rails application during build构建期间 dockerized rails 应用程序中的私有 Github 存储库
【发布时间】:2016-12-07 07:53:38
【问题描述】:

我使用 docker-compose.yml 对一个新的 Rails 5 应用程序进行 docker 化,并将我的 ssh-agent 套接字转发到 compose 文件中的容器中。

如果我通过 docker-compose 构建和运行,这一切正常,我可以访问 ssh 密钥。

但是,如果我将 bundle install 添加到构建过程中,该过程从私有 Git 存储库中获取并需要 SSH 密钥,那么它当然还不可用。

我该如何解决这个问题?

我当前的 Dockerfile 和 docker-compose.yml 文件是: https://gist.github.com/solars/d9ffbc4c570e9a128d6b0254268d785a

谢谢!

【问题讨论】:

    标签: ruby-on-rails git docker ssh docker-compose


    【解决方案1】:

    您需要 ~/.ssh/id_rsa 将 private repo 克隆到 docker 映像中。

    • 一种方法:复制您的 id_rsa 并粘贴到 docker 映像中(~/.ssh/ 位置)

    • 其他:您可以创建另一个临时id_rsa(可能在 docker 容器中运行并将 .ssh 文件复制到本地计算机中)。在使用 Dockerfile 创建 docker 镜像时,总是将 new .ssh 文件夹复制到 docker 镜像 (~/ location) 中。接下来,在您的 github account -> settings -> SSH and GPG keys -> new SSH key 中添加您的 new .ssh/id_rsa.pub

      工作过程:当你创建一个新镜像时,你正在通过Dockerfile复制相同的.ssh文件夹,所以id_rsa保持不变,id_rsa.pub被添加到你的@ 987654334@之前。因此,您始终可以从您的 docker 容器中克隆您的 private repo

    【讨论】:

    • 我只在构建过程中需要它。我不想将密钥留在最终的 docker 映像中(例如,如果我要部署它)
    • “在构建期间需要它”如果您仅在创建 docker 映像时需要它,那么您可以 add it first (Dockerfile) 然后 clone repo 最后是 delete .ssh 文件夹 (Dockerfile)。
    • @Christoph known_hosts 文件在容器中其他机器访问时需要允许访问。
    • 显然这并不容易,除非您将其压缩,否则密钥仍在文件中:blog.cloud66.com/…
    猜你喜欢
    • 2020-03-22
    • 2014-09-22
    • 2021-06-19
    • 1970-01-01
    • 2022-01-18
    • 2012-05-31
    • 2021-03-26
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多