Docker错误:没有此文件或目录,打开'/package.json'。

19

我正在尝试在Docker中运行一个节点映像,但是遇到了这个错误:

npm WARN saveError ENOENT: no such file or directory, open '/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#2 No description
npm WARN !invalid#2 No repository field.
npm WARN !invalid#2 No README data
npm WARN !invalid#2 No license field.

这是我的Docker文件。我想将所有项目文件放在容器中的/home/app/文件夹中:

# Use an official node runtime as a parent image
FROM node:10

# Set the working directory to /home/app
#WORKDIR /home/app/

# Bundle app source
COPY . /home/app/

# If you are building your code for production
# RUN npm install --only=production
RUN npm install

# Make port 8000 available to the world outside this container
EXPOSE 8000

CMD npm run dev

我在使用Windows,同时使用Hyper-V。我的package.json与Dockerfile位于同一级别。

有想法吗?

谢谢


2
对于遇到此问题的其他人,请确保您没有使用docker-compose卷覆盖目录。 - Jordan
4个回答

21
当运行npm install命令时,工作目录可能是/,这里没有package.json文件。只需在Dockerfile中取消注释您的WORKDIR /home/app/行即可。

1

我的愚蠢错误是在运行npm命令之前忘记指定WORKDIR... 希望这也能帮助到其他人!请确保在CMD行中准确指定WORKDIR...


1

这很可能是目录路径的问题。在Dockerfile中,您可以尝试使用COPY . ./而不是您正在使用的任何其他命令。 由于您已经将工作目录指定为/home/app在WORKDIR中。任何后续的docker命令都将在该工作目录内执行。 因此,COPY . ./将把所有文件/文件夹复制到当前工作目录中。


0

由于您将WORKDIR设置为/home/app/,因此所有后续指令都将在同一工作目录中执行,即/home/app/

因此,copy . /home/app/指令会将您的文件复制到/home/app/home/app/目录。

因此,npm install无法找到package.json。

两个解决方案:

  1. 删除WORKDIR指令
  2. 或将复制指令更改为COPY . .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接