为什么node_modules在构建之后会继​​续从docker中消失?

时间:2015-04-16 16:14:49

标签: javascript node.js continuous-integration docker circleci

我正在模仿https://github.com/mjhea0/node-docker-workflow中找到的设置。使用docker-compose链接2个docker容器(node,redis)。

这是圈ci文件:

machine:
  services:
    - docker

dependencies:
  override:
    - sudo pip install -U docker-compose

test:
  override:
    - docker-compose run -d --no-deps node
    - cd node; npm test

这是我的节点Dockerfile:

FROM dockerfile/nodejs

RUN mkdir /src

RUN npm install nodemon -g

WORKDIR /src
ADD . /src
RUN npm install

EXPOSE 3000

CMD npm start

测试不断失败,因为找不到chai。这是因为一旦构建完成,node_modules就会消失。

在circle.yml文件中的这两个步骤之间,npm install安装了node_modules,然后在运行npm test命令时它们就消失了。

test:
  override:
    - docker-compose run -d --no-deps node
    - cd node; npm test

我无法弄清楚为什么会这样。由于我刚刚开始使用Docker,有人可以(用非专业术语)详细解释我上面使用的回购有什么问题,以及如何解决它。

谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,事实证明它非常非常简单,而且可能相当愚蠢/明显。

测试未在 容器中运行。

docker-compose run -d --no-deps node

此行以 分离 模式运行容器。这意味着当下一个命令运行时,它正在外面容器中运行。

要解决此问题,只需删除-d,以便下一个命令在容器内运行。

docker-compose run --no-deps node

简单。