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

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

我想在/home/client运行这个命令,但是我在container中的工作目录是/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 

两个命令为了certificate有一个目录/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 error:code = 2 desc = oci runtime error:exec failed:container_linux.go:247:启动容器进程导致“exec:\”cd \“:可执行文件未在$ PATH中find”

是的,这是可能的。 你可以通过以下两种方式之一来完成。

方法1

这样做一个单一的命令:

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

或者像这样(作为一个arg到npm install ):

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

方法2

使用交互式terminal:

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

这是可能的:

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

感谢Matt