COPY package.json - Dockerfile

时间:2018-04-01 03:25:44

标签: json node.js docker dockerfile

我为Node.js中的项目做了一个Dockerfile,但发生了错误。

这是Dockerfile:

FROM node:latest
RUN npm install nodemon -g
WORKDIR ./app
COPY package.json ./app
RUN npm install -g
COPY server.js ./app
EXPOSE 3000
CMD ["npm", "start"] 

当我尝试构建此Dockerfile时会发生如下错误:

Step 4/8 : COPY package.json ./app
COPY failed: stat /var/lib/docker/tmp/docker-builderXXXXXXXX/package.json: no such file or directory

我该如何解决?

Docker版本17.12.0

3 个答案:

答案 0 :(得分:1)

我的建议是,将所有文件移至WORKDIR,而不是执行npm install

FROM node:latest
RUN npm install nodemon -g
WORKDIR /app
ADD . /app
RUN npm install
EXPOSE 3000
CMD ["npm", "start"] 

答案 1 :(得分:0)

确保您在Dockerfile的同一目录中有package.json和server.js文件,它应该可以工作。

当您构建docker镜像时,目录的整个内容将成为您的docker构建上下文,docker将从那里找到您复制或添加的文件。

您有时可能希望阻止将某些文件发送到构建上下文,在这种情况下,您可以使用.dockerignore文件来指定这些文件。祝你好运!

答案 2 :(得分:0)

永远不要在生产中运行 nodemon (如果您要这样做)。 如果应用崩溃,您应该配置重启。最好在docker-compose.yml

中将其设置为always

根据您的情况构建Dockerfile的最佳方法:

FROM node:latest
WORKDIR ./app
# please note, you already declared a WORKDIR, 
# therefore your files will be automaticaly pushed to ./app
COPY package.json ./
RUN npm install -g
COPY ./ ./ 
EXPOSE 3000
CMD ["npm", "start"]

希望,这会有所帮助。