泊坞窗。在不同的文件夹中执行npm命令

时间:2017-01-31 19:23:03

标签: docker npm

我想在容器中运行npm install命令。 但很简单:docker exec container npm install对我来说不合适。

我想在/home/client中运行此命令,但我在容器中的工作目录为/home

这可能吗? 我不想进入容器,我不想改变工作环境。

修改1 Dockerfile:

FROM ubuntu:16.04
COPY . /home
WORKDIR /home
RUN apt-get update && apt-get install -y \
    python-pip \
    postgresql \
    rabbitmq-server \
    libpq-dev \
    python-dev \
    npm \
    mongodb
RUN pip install -r requirements.txt

Docker运行命令:

docker run \
-tid \
-p 8000:8000 \
-v $(PWD):/home \
--name container \
-e DB_NAME \
-e DB_USER \
-e DB_USER_PASSWORD \
-e DB_HOST \
-e DB_PORT \
container

为了证明存在目录/home/client

,有两个命令
docker exec container pwd

给予:/home

docker exec container ls client

给予:

node_modules
package.json
src
webpack.config.js

来自我主机的节点模块。

编辑2 运行时:

docker exec container cd /home/client

它会产生以下错误:

  

rpc错误:代码= 2 desc = oci运行时错误:exec失败:container_linux.go:247:启动容器进程导致" exec:\" cd \":找不到可执行文件在$ PATH"

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。你可以用两种方法之一做。

方法1

在这样的单个命令中执行:

$ docker exec container sh -c "cd /home/client && npm install"

或者像这样(作为npm install的arg):

$ docker exec container npm install --prefix /home/client

方法2

使用互动终端:

$ docker exec -it container /bin/bash
# cd /home/client
# npm install

答案 1 :(得分:1)

这可以用:

docker exec {container} sh -c "cd /home/client && npm install"

感谢Matt