【发布时间】:2022-01-06 16:05:05
【问题描述】:
我正在尝试构建图像并出现以下错误:
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /dev/lab3/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/dev/lab3/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
这里有 Dockerfile:
FROM node:latest
WORKDIR /dev/lab3
COPY server.js .
COPY package.json .
RUN mkdir /files
ADD ./files /files
RUN npm install
CMD ["npm", "start"]
看df -h:
root@279f05c372ce:/dev# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 118G 13G 99G 11% /
tmpfs 64M 0 64M 0% /dev
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda5 118G 13G 99G 11% /etc/hosts
tmpfs 3.9G 0 3.9G 0% /proc/acpi
tmpfs 3.9G 0 3.9G 0% /proc/scsi
tmpfs 3.9G 0 3.9G 0% /sys/firmware
我的假设 - 在构建图像时,WORKDIR 将 /dev/lab3 设置为工作目录。 /dev 是 tmpfs 文件系统(临时),因此当创建下一层图像(COPY server.js 和 COPY package.json)时,没有 /lab3 文件夹。 你能确认一下吗?还是有其他解释?
【问题讨论】:
-
欢迎来到 StackOverflow!
/dev不是应用程序文件的常见位置。您可以尝试改用/opt/或/src/吗? -
是的,我当然可以。但我希望获得关于 /dev 或一般 tmpfs 的解释 :)
-
/dev是 linux 设备“文件”的特殊目录。 tldp.org/LDP/sag/html/dev-fs.html
标签: node.js docker npm dockerfile docker-image