试图dockerize一个node.js文件,但不断收到错误
FROM node:7 WORKDIR ~/Desktop/CS612 COPY package.json ~/Desktop/CS612 RUN npm install COPY . ~/Desktop/CS612 CMD node server.js EXPOSE 3000
好吧,我已经转换它,并能够得到这个远:
Step 5/7 : COPY . ~/Desktop/CS612/ ---> 885080c48872 Step 6/7 : CMD node server.js ---> Running in 7ffbaeec889f ---> 61654068c183 Removing intermediate container 7ffbaeec889f Step 7/7 : EXPOSE 3000 ---> Running in 6862095ac871 ---> abb84902c53b Removing intermediate container 6862095ac871 Successfully built abb84902c53b Successfully tagged restaurants:latest Danas-MacBook-Air:CS612 DanaCarlin$ docker run restaurants module.js:538 throw err; ^ Error: Cannot find module '/~/Desktop/CS612/server.js' at Function.Module._resolveFilename (module.js:536:15) at Function.Module._load (module.js:466:25) at Function.Module.runMain (module.js:676:10) at startup (bootstrap_node.js:187:16) at bootstrap_node.js:608:3
为什么现在我得到这个错误? 这没有任何意义,这绝对是一个文件,持有的要求和回应
WORKDIR ~/Desktop/CS612
WORKDIR指定容器内的工作目录,而不是Danas-MacBook-Air上的目录。 主机工作目录更接近于Docker在MacBook Air上调用构build上下文的内容。
而且, Docker在容器中需要绝对path 。 您正在容器/~/Desktop/CS612
创build一个目录,在完成构build时,所有后续的Dockerfile命令都将从该目录运行。 可能不是你想要的。
tl; dr在Dockerfile中抛弃相对path( ~/
)。 例如: COPY . /Desktop/CS612
COPY . /Desktop/CS612
。
编辑:反映原始问题的变化