我为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
答案 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"]
希望,这会有所帮助。