我正在尝试通过docker Compose建立一个单元测试运行时。当我试图通过Docker运行一个npm脚本时-compose节点的行为就好像它在路径上找不到模块:
➜ docker-compose run --rm server npm run test
Starting redis ... done
Starting mongodb ... done
> evolved@1.0.0 test /server
> mocha --recursive tests
sh: mocha: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! evolved@1.0.0 test: `mocha --recursive tests`
npm ERR! spawn ENOENT
➜ dc run --rm --service-ports server ls node_modules/.bin | grep "mocha"
Starting redis ... done
_mocha mocha
"test": "mocha --recursive tests",
"build": "gulp default:dev",
version: '3' #compose version
services:
server:
build:
context: .
dockerfile: Dockerfile.test
ports:
- "3000:3000"
volumes:
- ".:/server"
working_dir: "/server"
depends_on:
- mongodb
- redis
environment:
PORT: 3000
NODE_ENV: test
mongodb:
image: mongo:latest
container_name: "mongodb"
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./localdata/db:/data/db
ports:
- 27017:27017
command: mongod --smallfiles --logpath=/dev/null # --quiet
redis:
container_name: redis
command: redis-server --requirepass testredispassword
image: redis
ports:
- "6379:6379"
volumes:
- ./localdata/redis:/data
entrypoint: redis-server --appendonly yes
restart: always
FROM node:8-alpine
RUN apk update \
&& apk --update --no-cache add \
git \
python \
build-base
ADD ./ /server WORKDIR /server
RUN rm -rf node_modules && npm install && npm run build
我认为这一切都很简单,我以前也做过类似的设置,但在Docker for Mac上。这一次我运行Docker For Windows并通过WSL运行命令。我共享了驱动器,并将/mnt/c绑定到/c。
作为另一个参考,我可以在Docker For Mac上运行单元测试,但在Windows 10上通过连接到Docker For Windows的WSL运行它时得到相同的sh:mocha:not found
。它似乎只是二进制文件node_modules/.bin
的路径,但没有找到,因为我可以启动项目而没有任何错误,它只是找不到任何二进制文件,如mocha、nsp、gulp等。
听起来这类似于我在Windows/WSL环境中遇到的路径问题。尝试将卷定义更改为完整路径,看看这是否解决了问题。
volumes:
- /c/Users/username/Code/server:/server
即使您已经使用Dockerfile将文件复制到容器中,但当使用docker-compose装入卷时,它并不真正关心这一点。您实际上更改了目录源的映射。
我有一个树类,看起来像: 其中树根包含指向其他子节点等的子节点的指针。我遇到的问题是,一旦它找到节点,我需要返回到该节点的路径。
我试着从wsl跑出流浪汉: Windows 10 Pro版本1703 Build 15063.540 Ubuntu 16.04.2 LTS 流浪版本:1.9.7 Virtualbox版本:5.1.26r117224 添加到我的bachrc 我已经将virtualbox添加到windows中的路径中 在逃亡途中,我犯了这个错误 Stderr:VBoxManage。exe:错误:RawFile#0未能
JNA还加载正确的库。 这里有人知道为什么不起作用吗?是因为我使用的是带有清单的jar应用程序文件吗? 有人有类似的问题吗?
我有一个问题: 我已经做了: 作曲家更新
我想做我的第一个码头集装箱 我安装了dokcer-ce,遵循ubuntu的docker教程。 我创建一个文件夹,并把我的Dockerfile在它。 在这个文件夹中,我做了一个: 我总是有这样的输出 编辑:我在sshd,没有工作?!
我很难让npm命令正常工作,不幸的是,我对unix的了解不足以独自解决这个问题。我所做的只是,我得到以下错误: 当我键入时,我得到 进一步研究这个问题,我发现了这个堆栈溢出的答案: 在zsh中安装npm后未找到命令 根据它的建议,我尝试添加到我的. zshc文件。键入时仍然会出现相同的错误 我可以确认它是在路径收益率 我也可以确认节点已经安装产生 有什么想法吗?我被难住了