【问题标题】:Docker-compose up : no such file or directory, open '/usr/src/app/package.json'Docker-compose up:没有这样的文件或目录,打开'/usr/src/app/package.json'
【发布时间】:2019-04-17 08:02:56
【问题描述】:

我正在使用 docker 和 docker-compose 来运行我的 express nodejs api。

这是我的 docker 文件:

FROM node:10-alpine

ARG NODE_ENV=development
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

RUN chmod 755 /usr/src/app

CMD [ "npm", "start" ]

正如我提到的,我正在使用 docker-compose,这里是 docker-compose.yml 文件内容:

version: "3"

services:
  service:
    build: .
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - 3001:3001
    command: npm start

运行 docker-compose up 后,我遇到一个错误,说它无法找到 package.json。

这是错误:

service_1  | npm ERR! path /usr/src/app/package.json 
service_1  | npm ERR! code ENOENT 
service_1  | npm ERR! errno -2 service_1  | npm ERR! syscall open 
service_1  | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json' 
service_1  | npm ERR! enoent This is related to npm not being able to find a file. 
service_1  | npm ERR! enoent 
service_1  | 
service_1  | npm ERR! A complete log of this run can be found in: 
service_1  | npm ERR! /root/.npm/_logs/2019-04-17T07_54_07_773Z-debug.log
xuser-api_service_1 exited with code 254

请帮忙找出我的错误。

【问题讨论】:

  • 您能否在问题中也包含您的docker-compose.yml?有一个常见的设置涉及使用 volumes: 隐藏 Dockerfile 所做的所有事情,这似乎可能导致此错误;如果你有volumes:,你可以尝试删除那个块。
  • 嗨大卫,我包括 docker-compose.yml

标签: node.js docker docker-compose


【解决方案1】:

您的工作目录是 /usr/src/app 并且您将包文件复制到根目录。 你必须这样做

# set working directory 
WORKDIR /usr/src/app

# install node_modules
ADD package.json /usr/src/app/package.json
RUN npm install

# copy codebase to docker codebase
ADD . /usr/src/app

【讨论】:

  • 问题中的COPY./,也就是当前的WORKDIR,即/usr/src/app
  • 你没有将 package.json 添加到 /usr/src/app 中,你必须将所有项目添加到你的工作目录中
  • COPY package*.json ./ 应该将package.json(匹配全局)复制到/usr/src/appWORKDIR)。
  • 使用 ADD 代替复制或使用 RUN cp
【解决方案2】:

您可能正在使用不包含最新更改的旧图像。 确保您使用 docker 文件的最新映像。

docker-compose build 

然后运行

docker-compose up

如果您经常更改 Dockerfile 进行测试,请使用。

docker-compose up --build

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 2020-09-10
    • 2018-03-25
    • 2019-01-19
    • 1970-01-01
    • 2018-12-23
    • 2019-04-13
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多