【问题标题】:Failed to execute git command in Docker container using fig/crane使用 fig/crane 在 Docker 容器中执行 git 命令失败
【发布时间】:2014-11-25 23:04:13
【问题描述】:

我使用crane 来编排我的容器,并且我有一个 git 子模块用于我的项目源(一个 NodeJS 应用程序)。当我在我的项目根目录中尝试bower install 时运行我的容器时,会发生此错误:

bower jquery#~2.1.1            ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/jquery/jquery.git", exit code of #128

Additional error details:
fatal: Not a git repository: ../../.git/modules/src/web

这是我的crane.yml 配置文件:

containers:
    db:
        dockerfile: images/db
        image: project/db
        run:
            detach: true
    web:
        dockerfile: images/web
        image: project/web
        run:
            volume: ["src/web:/src"]
            publish: ["8000:8000"]
            link: ["db:mongo"]
            detach: true

这是我的fig.yml

db:
    build: images/db
web:
    build: images/web
    volumes:
      - src/web:/src
    links:
      - db:mongo
    ports:
      - "8000:8000"

奇怪的是,当我将音量设置在当前目录之外(例如../myproject)时,它可以工作。但我真的需要在我的存储库中有一个子模块

编辑

如果我使用命令行它不起作用。所以它与无花果或起重机无关,但可能与 Docker、bower 或 git 的工作方式有关。

注意

  • 我在 Archlinux 上
  • 我也试过Docker fig,它会产生同样的错误

感谢您的帮助!

【问题讨论】:

  • 你发过git submodule init,git submodule update吗?
  • 问题是由于repo没有正确初始化子模块引起的。每个 git 子模块都有自己独立的存储库,git submodule 机器在 .git/modules/ 子目录中创建它的克隆,模块的工作目录引用该克隆存储库。所以你遇到的错误意味着存储库没有正确克隆,要么是因为你忘记了这样做,要么是因为某种原因它无法初始化
  • 我做了一个git submodule add git@github.com:kokaz/myrepo src/webgit submodule initgit submodule update。当我使用 Docker CLI 运行容器时它运行良好,即使它是子模块但不是通过我的协调器

标签: git containers docker bower git-submodules


【解决方案1】:

当你使用git submodule时,你会发现一个.git文件引用了git目录,类似这样:

gitdir: ../../.git/modules/src/web

当您启动 Docker 容器时,您会将 .git 文件放入不带 .git/ 文件夹的位置,因此当容器在子模块中启动 git 命令时,它会尝试访问无法访问的 git 对象。

解决方案

暂时重命名.git文件或不使用git submodule

【讨论】:

  • 有什么干净的方法可以做到这一点吗?我的意思是,我有一堆网关作为子模块,我不想在每次需要安装新的 git 存储库时重命名它们的 .git。
【解决方案2】:

如果您在 docker container 中使用 git submodule 并运行 git 或 bower,则找到了解决此问题的方法。在您的 Dockerfile 中,放置以下内容以修复 git 引用:

    # git submodules reference fix
    ENV GIT_DIR=/path/to/git/submodule

【讨论】:

    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2021-08-18
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多