泊坞窗。 在不同的文件夹中执行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