【问题标题】:NPM install fails in dockerized envNPM 安装在 dockerized 环境中失败
【发布时间】:2018-08-10 13:18:07
【问题描述】:

我正在尝试使用 docker 设置一些遗留项目。为此,我创建了一个包含docker 文件的主存储库,并将实际项目添加为submodule。结果我有:

root
|- data
|- etc
|  |-php
|  |-etc
|- project
|  |- .git
|  |- (actual project files)
|- docker-compose.yml
|- .dockerignore

在这样的设置中,project/.git 只是一个包含gitdir: ../.git/modules/project 的文本文件。

现在,在docker-compose.yml 中,我映射了以下卷:

- ${APP_PATH}:/var/www/html

在这个容器中,我安装了npm install(我知道我应该为node 准备单独的容器,我以后会这样做,但现在我需要运行我所拥有的),这最终得到了@ 987654330@

root@06fc2e3fe52a:/var/www/html# npm install
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/bengourley/stack-generator.git
npm ERR! 
npm ERR! fatal: Not a git repository: ../.git/modules/project

我已经创建了以下.dockerignore 文件:

project/.git
project/.gitignore
project/.gitattributes
.git
Dockerfile
.DS_Store
.gitignore
README.md
/tmp/*

是否可以在不映射容器中 www 上方的根 docker 目录的情况下完成这项工作,以便 npm install 可以通过?

【问题讨论】:

    标签: git docker npm


    【解决方案1】:

    是否可以在不映射容器中 www 上方的根 docker 目录的情况下完成这项工作,以便这个 npm 安装可以通过?

    考虑到在docker build 进程中,所有与Git 相关的文件夹都被忽略(根据您的.dockerignore 文件),这可能有点挑战。

    我真的需要一个关于如何处理与 git 子存储库相关的 npm install 的答案

    这就是npm issue 6700 的意义所在。
    它提出了几种方法:

    • postinstall 脚​​本来初始化你的 git 子模块。作为in this example
    • 将所有 git 存储库检出到并行目录中,例如,
    src/
    src/mod1
    src/mod2
    src/mod3
    

    然后使用npm link连接依赖:

    $ cd src/mod1
    $ npm link
    # this makes a link from the system-wide node_modules to the current dir 
    $ cd ../mod2
    $ npm link mod1
    # this makes a link from node_modules/mod1 to ../mod2
    

    这样,如果您在 mod1 或 mod2 中进行更改,它们可以提交到适当的 git 存储库,您可以立即看到更改,而无需重新安装、重新下载等。

    第二种方法很有前途,前提是您可以将预初始化的子模块 repo 挂载到单独的路径中,并使用 npm link 引用正确的文件夹,同时仍位于 /var/www/html 中。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,但可以使用.dockerignore-file 解决。

      src/.git
      src/.gitignore
      src/.gitattributes
      

      但在 Dockerfile 级别(而 src 是子存储库),而不是在顶层。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多