码头工人。在不同的文件夹中执行 npm 命令

Sno*_*bby 1 npm docker

我想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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

两个命令以证明存在一个目录/home/client

docker exec container pwd
Run Code Online (Sandbox Code Playgroud)

给出: /home

docker exec container ls client
Run Code Online (Sandbox Code Playgroud)

给出:

node_modules
package.json
src
webpack.config.js
Run Code Online (Sandbox Code Playgroud)

那是我的主机的节点模块。

编辑 2 运行时:

docker exec container cd /home/client
Run Code Online (Sandbox Code Playgroud)

它产生以下错误:

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

Sno*_*bby 5

这是可能的:

docker exec {container} sh -c "cd /home/client && npm install"
Run Code Online (Sandbox Code Playgroud)

感谢马特