我刚刚开始学习docker-compose
而我正在使用nodejs
图像。我想安装gulp
来创建一些任务,让其中一个在后台工作。
当我跑步时:docker-compose run --rm -d server gulp watch-less
我收到此错误:ERROR: oci runtime error: container_linux.go:247: starting container process caused "exec: \"gulp\": executable file not found in $PATH"
这是我的档案:
# Dockerfile
FROM node:6.10.2
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install --quiet
COPY . /usr/src/app
CMD ["npm", "start"]
# docker-compose.yml
version: "2"
services:
server:
build: .
ports:
- "5000:5000"
volumes:
- ./:/usr/src/app
我还有一个.dockerignore
来忽略node_modules
文件夹和npm-debug.log
编辑:
当我运行docker-compose run --rm server npm install package-name
时,我没有任何问题并且已安装软件包。
答案 0 :(得分:1)
尝试在Dockerfile中添加gulp install:
# Dockerfile
FROM node:6.10.2
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN npm install -g gulp
COPY package.json /usr/src/app
RUN npm install --quiet
COPY . /usr/src/app
CMD ["npm", "start"]
答案 1 :(得分:0)
我找到了一个有效但可能不是最佳解决方案的解决方案。我创建了一个在gulp
上运行package.json
任务的脚本,如果我运行:
docker-compose run --rm server npm run gulp_task
它有效并且做了它必须做的事情。
答案 2 :(得分:0)
我发现只是通过
引用gulp ./node_modules/.bin/gulp
而不是直接工作正常。默认情况下,。/ node_modules / .bin不在路径中。另一个选择是将该dir添加到PATH。