我正在模仿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,有人可以(用非专业术语)详细解释我上面使用的回购有什么问题,以及如何解决它。
谢谢!
答案 0 :(得分:1)
嗯,事实证明它非常非常简单,而且可能相当愚蠢/明显。
测试未在 容器中运行。
docker-compose run -d --no-deps node
此行以 分离 模式运行容器。这意味着当下一个命令运行时,它正在外面容器中运行。
要解决此问题,只需删除-d
,以便下一个命令在容器内运行。
docker-compose run --no-deps node
简单。