我使用crane编排容器,我的项目源(NodeJS应用程序)有一个git子模块。当我在我的项目根目录中尝试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如何工作有关。
注意
感谢您的帮助!
答案 0 :(得分:3)
当您使用git submodule
时,您会找到一个引用git目录的.git
文件,类似于:
gitdir: ../../.git/modules/src/web
当您启动Docker容器时,您将.git
文件放在.git/
文件夹中,因此当容器在子模块中启动git
命令时,它会尝试访问git对象哪些是无法访问的。
解决方案
使用.git
git submodule
文件
答案 1 :(得分:0)
如果您在git submodule
内使用docker container
并运行git或bower,则找到此问题的解决方案。在Dockerfile
中,放置以下内容以修复git引用:
# git submodules reference fix
ENV GIT_DIR=/path/to/git/submodule