node.js - Docker/GitLab : npm dependencies installed in docker image, 但通过运行器未满足

标签 node.js docker npm gitlab

首先,我正在检查测试 docker 镜像,我在 gitlab CI 中将其用作 docker 运行程序:

如果 docker 容器内运行此命令(testing)...

meteor npm list --depth=0

给了我预期的结果:

npm info it worked if it ends with ok
npm info using npm@5.4.2
npm info using node@v8.6.0
project@1.0.0 /builds/namespace/project
+-- autoprefixer@7.1.5
+-- babel-runtime@6.26.0
+-- bcrypt@1.0.3
+-- fluent-ffmpeg@2.1.2
+-- gm@1.23.0
+-- gridfs-stream@1.1.1
+-- react@16.0.0

因此所有依赖项都安装在 docker 镜像中。现在我在我的 gitLab CI 中使用这个图像:

我的 gitLab CI yml 文件如下所示:

unit:
  image: testing:latest
  stage: unit
  tags:
    - testing
  script:
    - meteor npm list --depth=0

但结果是:

npm info it worked if it ends with ok
npm info using npm@5.4.2
npm info using node@v8.6.0
project@1.0.0 /builds/namespace/project
+-- UNMET DEPENDENCY autoprefixer@7.1.4
+-- UNMET DEPENDENCY babel-runtime@6.26.0
+-- UNMET DEPENDENCY bcrypt@1.0.3
+-- UNMET DEPENDENCY fluent-ffmpeg@2.1.2
+-- UNMET DEPENDENCY gm@1.23.0
+-- UNMET DEPENDENCY gridfs-stream@1.1.1
+-- UNMET DEPENDENCY react@15.6.0

为什么没有安装依赖项?我不想每次 CI 运行作业时都安装它们。相反,我希望所有依赖项都已安装在 docker 镜像中,以使其更快。

更新

运行CI阶段,没有node_modules目录,该目录存在于docker镜像中... 如何防止 gitlab 删除该文件夹?

最佳答案

这是因为当构建开始时,它会再次获取您的存储库,本质上是用新的克隆覆盖内容。最快的修复方法是暂时将依赖项移至其他文件夹,然后在实际构建期间将它们移回。例如,执行 meteor npm installnode_modules 移动到 /example/node_modules,然后在构建过程中将它们移回 /builds/namespace/project/node_modules

关于node.js - Docker/GitLab : npm dependencies installed in docker image, 但通过运行器未满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650468/

相关文章:

python - Curl 可以工作,但 python requests 不行

node.js - Visual Studio 捆绑 Node Js 与单独标准的比较

javascript - promise 问题 : Trying to wrap mysql queries to use it on NodeJS/Express

javascript - fs.createReadStream 之后代码块未执行

node.js - 控制台未打开时无法加载资源:net::ERR_EMPTY_RESPONSE

macos - 如何将文件从 docker 虚拟机复制到 OS X 上的主机?

php - 提供了 Doctrine 节点名或 servname,或者在 Docker 上未知

ubuntu - npm 在 ubuntu 10.04 下不安装模块

node.js - angular-cli:为什么当 npm 安装新模块时,旧模块会被删除

node.js - 无法使用 npx create-react-app 安装 React 应用程序。 Node 引擎 "node"与该模块不兼容