我正在个人项目上设置docker,但是遇到了路径错误。
这是我的Dockerfile:
FROM node:latest
WORKDIR /Users/Alex/funky-ducks/mediumrare/mediumrare
COPY ./ ./
RUN npm install
CMD ["/bin/bash"]
我的docker-compose.yml文件:
version: '3.7'
services:
mediumrare_docker:
container_name: container001
build: /Users/Alex/funky-ducks/mediumrare/mediumrare
command: npm start
ports:
- "3000:3000"
这是我的目录文件结构(在docker-compose.yml下面注意“ mediumrare”是前端/ mediumrare_server是后端):
.
└── mediumrare
├── Dockerfile
├── README.md
├── docker-compose.yml
├── mediumrare
│ ├── README.md
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ ├── src
│ └── yarn.lock
├── mediumrare_server
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ └── server.js
├── package-lock.json
└── package.json
我尝试在顶层目录中创建package.json文件,并提交package-lock.json文件。
当我运行docker-compose up
时,收到的错误消息如下:
Creating container001 ... done
Attaching to container001
container001 | npm ERR! path /Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json
container001 | npm ERR! code ENOENT
container001 | npm ERR! errno -2
container001 | npm ERR! syscall open
container001 | npm ERR! enoent ENOENT: no such file or directory, open '/Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json'
container001 | npm ERR! enoent This is related to npm not being able to find a file.
container001 | npm ERR! enoent
container001 |
container001 | npm ERR! A complete log of this run can be found in:
container001 | npm ERR! /root/.npm/_logs/2019-05-21T17_39_18_298Z-debug.log
container001 exited with code 254
我看到在构建它时,它正在“ mediumrare_server”目录中寻找package.json文件。但是package.json文件是顶部的“ mediumrare”目录。为什么找不到该文件,如何解决此错误?谢谢!
答案 0 :(得分:0)
我在本地尝试了类似的代码,并且有效。您的图片可能已过时。通过运行docker-compose up --build
关于Dockerfile的一些注意事项
COPY
package.json
和package-lock.json
,然后依次运行npm install
和COPY
源文件。这将使您能够利用分层缓存。build .
而不是完整路径