Reactjs Dockerfile-npm:未找到

Reactjs Dockerfile-npm:未找到,reactjs,docker,npm,dockerfile,Reactjs,Docker,Npm,Dockerfile,我想为reactjs应用程序创建一个开发环境。我是Docker的新手,一直在尝试使用Docker创建一个环境。下面是我的Dockerfile代码 # Base node image FROM node # create working directory ADD ./code /usr/src/app WORKDIR /usr/src/app # add node_modules path to environment ENV PATH /usr/src/app/node_modules/.

我想为reactjs应用程序创建一个开发环境。我是Docker的新手,一直在尝试使用Docker创建一个环境。下面是我的Dockerfile代码

# Base node image
FROM node

# create working directory
ADD ./code /usr/src/app
WORKDIR /usr/src/app

# add node_modules path to environment
ENV PATH /usr/src/app/node_modules/.bin:PATH

# copy and install dependencies
COPY ./code/package.json /usr/src/app/package.json
RUN npm install --quiet
RUN npm install react-scripts@1.1.1 -g --silent

# start app
# CMD ["npm","start"]

但是,我在第
行运行npm安装--quiet

处收到错误“npm:notfound”,我确认节点随npm一起提供:

$ docker run -it --rm node /bin/bash
root@b35e1a6d68f8:/# npm --version
5.6.0
但是这条线

ENV PATH /usr/src/app/node_modules/.bin:PATH
覆盖初始路径,因此应尝试将其替换为

ENV PATH /usr/src/app/node_modules/.bin:${PATH}
另外,请注意,
ADD./code…
行很笨拙,因为它会添加应用程序的所有文件(包括
/code/package.json
!),而这一步来得太早(w.r.t.Docker的缓存机制),因此,我建议只需删除该行
ADD./code/usr/src/app
,并在
运行npm安装后添加一行
COPY./code./


最后,您可能还想查看Node.js应用程序的“dockerizing”官方文档:

或使用Thread,它附带Thread:)谢谢,伙计。它工作得非常好。然而,在将package.json复制到app目录后,我有一个疑问,Docker如何理解在app目录中执行npm安装。由于我们在代码中没有显式地使用cd dirname。@SanketR仅供参考,
WORKDIR/dir
Docker命令基本上等同于
mkdir-p/dir&&cd/dir
Bash命令。更改后的目录将保留给同一版本的所有后续Docker命令…非常感谢。这确实是有用的信息。Docker命令似乎相当混乱。你救了我一天。