为什么 node_modules 在构建后一直从 docker 中消失?

Why do node_modules keep disappearing from docker after build?

我正在模仿这里 https://github.com/mjhea0/node-docker-workflow 的设置。使用 docker-compose 到 link 2 docker 个容器(节点、redis)。

这是 circle 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

这是我的节点Docker文件:

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 文件 node_modules 中的这两个步骤之间是通过 npm install 安装的,然后当 npm test 命令是 运行 时它们就消失了。

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

我不明白为什么会这样。因为我刚刚开始使用 Docker,有人可以(用外行的术语)相当彻底地解释我上面使用的回购协议有什么问题,以及如何解决它。

谢谢!

好吧,事实证明这是非常非常简单的事情,而且可能相当 silly/obvious。

测试不在运行容器内

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

这一行 运行 容器处于 分离 模式。这意味着当下一个命令 运行s 时,它 运行ning 容器之外。

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

docker-compose run --no-deps node

简单。