0

我正在模仿这里的设置https://github.com/mjhea0/node-docker-workflow。使用 docker-compose 链接 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

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

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

我无法弄清楚为什么会这样。当我刚开始使用 Docker 时,有人可以(用外行的话)相当彻底地解释我上面使用的 repo 有什么问题,以及如何解决它。

谢谢!

4

1 回答 1

1

好吧,事实证明这是非常非常简单的事情,而且可能相当愚蠢/显而易见。

测试没有在容器内运行。

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

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

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

docker-compose run --no-deps node

简单的。

于 2015-04-24T11:14:27.080 回答