【问题标题】:How to use private repos in Dockerfile on circleci如何在 circleci 上的 Dockerfile 中使用私有存储库
【发布时间】:2021-11-15 17:53:08
【问题描述】:

我开始使用 circleci 构建和部署一个小型 Go 应用程序。我的应用程序还使用了一个私有存储库,并且我已经使用 ssh 密钥设置了 circleci 来获取该存储库。 所以在构建工作中,我有一个 go mod 下载步骤,并且效果很好。

下一步是构建 docker 镜像,在 Dockerfile 中我像这样进行构建;

go build -o app ./app/

这还会下载依赖项,其中之一是私有仓库。什么是最好的前进道路?我应该将 ssh 密钥传递到 dockerfile 中,以便可以在 docker 中获取它吗?

【问题讨论】:

    标签: docker go circleci


    【解决方案1】:

    所以经过一些更详细的挖掘之后,似乎不同的作业在不同的容器或构建环境中运行,因此之后的步骤无法访问已经下载的私有 repos。

    为了解决这个问题,我像这样传递 github 密钥: extra_build_args: --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)"

    我正在使用这个 orb circleci/gcp-gcr@0.13.0。

    然后在我的 Dockerfile 中: 我使用 ssh 而不是 https 进行了一些格式化和设置。

    示例如下:

    RUN mkdir -p ~/.ssh && umask 0077 && echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa \
    && git config --global url."git@github.com:".insteadOf https://github.com/ \
    && ssh-keyscan github.com >> ~/.ssh/known_hosts
    ENV GOPRIVATE github.com/my-private-org/secret-repo
    

    也欢迎任何其他建议。到目前为止,这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-21
      • 2017-12-21
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2018-01-14
      相关资源
      最近更新 更多