【问题标题】:Git repo build URL with Docker composeGit repo 使用 Docker compose 构建 URL
【发布时间】:2021-11-23 21:23:34
【问题描述】:

我正在尝试在我的 docker-compose.yml 文件中使用 git repo URL,如 here 所述。服务如下所示:

  app:
    build: "https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop"

我收到以下错误:

$ docker-compose up
[+] Running 0/1
 ⠿ app Error                                                                   0.5s
[+] Building 0.0s (1/1) FINISHED                                                    
 => CACHED [internal] load git source https://[MY_GITHUB_OAUTH_TOKEN]  0.0s
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount730635615/https:/[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop/Dockerfile: no such file or directory

但是,当我从我的 docker-compose.yml 文件中复制确切的 URL 时,我可以成功地将它与 Docker 构建一起使用。我可以看到Dockerfile 的所有步骤正在执行。

$ docker build https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop

有一个develop 分支,[MY_GITHUB_OAUTH_TOKEN] 是我的实际 GitHub 令牌,并且在 repo 根目录中有一个有效的Dockerfile(大写 D)。为什么这适用于docker build 而不是docker-compose?令牌不会有问题,因为它适用于 docker build

如果重要的话,我在安装了 Docker for Mac 的 M1 Mac 上。 docker-compose 与其他服务配合良好。

【问题讨论】:

  • 在所有范围内使用 GitHub 个人访问令牌时,我会收到 Could not resolve host: github.company.com。格式为build: "https://ghp_[OMITTED]:@github.company.com/org/repo.git#develop"。没有主或主,目前只有develop。没有#develop 也无法工作。
  • 你使用的是什么版本的 Docker Compose?
  • 贵公司有自己的 github 实例,还是在 github.com 上?
  • Docker Compose version v2.1.1@PierreB。这是一个组织回购,但它是 github.com @BMitch。

标签: git docker docker-compose dockerfile


【解决方案1】:

尝试# - 去除双引号

  app:
    build: https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop

或者这个带或不带双引号

  app:
    build:
      context: https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop

或者这个带或不带双引号

  app:
    build:
      context: https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git#develop
      dockerfile: Dockerfile

【讨论】:

  • 感谢您的回复。不幸的是,与所有 3 个帖子中的错误相同。
  • 以下如何:1) 在容器上安装 ssh 作为 docker build 的一部分,2) 在 Mac 和 git repo 之间设置 ssh 权限,3) 作为 docker compose 的一部分配置为将 ssh id_rsa 密钥所在的目录挂载为具有容器 ssh 目录的卷,4) 使用 'git@github.com/org/repo.git#develop` 作为构建配置。这样我们可以查看是否是 docker compose / mac / git 配置的问题,或者是否与 docker compose 使用 oauth 令牌有关
  • 会的。我还要提到,当我只使用 git clone https://[MY_GITHUB_OAUTH_TOKEN]@github.com/org/repo.git 时,它工作正常,但我的 Mac 确实有一个 SSH 密钥设置。如果我将令牌更改为其他内容,我会收到身份验证错误(即使使用 SSH 密钥,GitHub 也更喜欢提供的令牌)。如果我尝试使用 docker build 的无效令牌也会发生同样的情况,所以我认为这意味着密钥必须没问题。
  • 尝试在我的本地计算机上以卷的形式访问~/.ssh- "~/.ssh:/root/ssh:ro"docker build git@github.com:org/repo.git,两者都给了我这个:failed to solve with frontend dockerfile.v0: failed to read dockerfile: failed to load cache key: rpc error: code = Unimplemented desc = unknown service moby.sshforward.v1.SSH。我可以git clone git@github.com:org/repo.git成功
  • 知道了,您使用的是 Docker Desktop 附带的 Docker Compose v2,不知道是不是新版本的问题。从cli尝试docker-compose disable-v2,它将强制它使用v1。看看这是否有效。您也可以通过 Docker Desktop 禁用。选择 Preferences=>General 并取消勾选“Use Docker Compose V2”
猜你喜欢
  • 2023-03-15
  • 2022-10-14
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多