docker-compose 无法以 npm ERR 启动! enoent ENOENT:没有这样的文件或目录,打开'/usr/src/app/package.json'
Posted
技术标签:
【中文标题】docker-compose 无法以 npm ERR 启动! enoent ENOENT:没有这样的文件或目录,打开\'/usr/src/app/package.json\'【英文标题】:docker-compose fails to start with npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'docker-compose 无法以 npm ERR 启动! enoent ENOENT:没有这样的文件或目录,打开'/usr/src/app/package.json' 【发布时间】:2019-07-19 22:34:49 【问题描述】:我从 docker 文件构建了一个图像来运行节点并复制到一个运行良好的简单节点快速应用程序中。我可以在其中运行容器和 bash 并复制本地文件。当我在 docker-compose 文件中使用此图像以及 mongo 图像时,容器构建但节点容器无法运行并出现错误是 package.json 丢失。
返回的错误是
report-node exited with code 254
report-node | npm ERR! path /usr/src/app/package.json
report-node | npm ERR! code ENOENT
report-node | npm ERR! errno -2
report-node | npm ERR! syscall open
report-node | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
report-node | npm ERR! enoent This is related to npm not being able to find a file.
report-node | npm ERR! enoent
report-node |
report-node | npm ERR! A complete log of this run can be found in:
report-node | npm ERR! /root/.npm/_logs/2019-02-26T10_55_05_562Z-debug.log
report-node exited with code 254
码头文件
FROM node
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 4000
CMD [ "npm", "run", "dev" ]
Docker-compose.yml 看起来像
version: '3'
services:
app:
image: gosmith/node10:latest
container_name: report-node
restart: always
volumes:
- ./:/usr/src/app
working_dir: /usr/src/app
depends_on:
- mongo
environment:
NODE_ENV: development
ports:
- 4000:4000
- 8080:8080
command: npm run dev && npm run serve
mongo:
container_name: mongo
image: mongo
expose:
- 27017
ports:
- 27037:27017
volumes:
- ./data:/data/db
package.json 是如何丢失的?感谢您的帮助!
【问题讨论】:
【参考方案1】:当你的docker-compose.yml
说
volumes:
- ./:/usr/src/app
它隐藏了在 Dockerfile 中完成的所有内容,并将其替换为当前目录。如果您的当前目录没有 package.json
文件(也许您将所有与 Docker 相关的内容都移到了子目录中),则会导致您看到的错误。
我个人只会删除这两行,在本地开发我的应用程序(不使用 Docker,使用每个项目的 node_modules
目录进行隔离),并且仅在我真正准备好部署 Docker 映像时才构建它。
【讨论】:
【参考方案2】:我遇到了同样的问题。
在你的情况下这样做:
在卷中更改此- ./:/usr/src/app
为此
volumes:
- ./:/app
/app
的名字是这样的:
services:
app:
【讨论】:
以上是关于docker-compose 无法以 npm ERR 启动! enoent ENOENT:没有这样的文件或目录,打开'/usr/src/app/package.json'的主要内容,如果未能解决你的问题,请参考以下文章
如何将 FSCrawler REST 与 docker-compose 连接起来
Apollo 网关在 docker-compose 中不起作用
无法将docker Spring-Boot应用程序与docker-compose中的mysql容器和flyway连接起来
Nodemon 无法在 Docker 上使用 package.json 中的 npm 脚本
docker-compose nodejs 在运行 docker composer 时出错。 mysql ER_NOT_SUPPORTED_AUTH_MODE