Dockerfile没有复制package.json文件。

3

我的文件夹结构如下:

project/
   -backend/
       Dockerfile
       package.json
   - docker-compose.yml

我的Dockerfile长这样
FROM node:14-alpine as base

WORKDIR /src
COPY ./package*.json /src
EXPOSE 3000


FROM base as dev
ENV NODE_ENV=development
RUN npm install -g nodemon && npm install
COPY . /
CMD ["npm run start:dev"]

仅仅是一个简单的Dockerfile,没有什么复杂的东西。

我的Docker Compose文件如下:

version: '3'
services:

  web:
    build:
      context: ./backend
      target: dev
    volumes:
      - .:/src
    command: npm run start:dev
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: development
      DEBUG: nodejs-docker-express:*

当我运行docker-compose up时,会出现一个错误提示。
web_1  | npm ERR! code ENOENT
web_1  | npm ERR! syscall open
web_1  | npm ERR! path /src/package.json
web_1  | npm ERR! errno -2
web_1  | npm ERR! enoent ENOENT: no such file or directory, open '/src/package.json'
web_1  | npm ERR! enoent This is related to npm not being able to find a file.
web_1  | npm ERR! enoent
web_1  |
web_1  | npm ERR! A complete log of this run can be found in:
web_1  | npm ERR!     /root/.npm/_logs/2021-05-22T20_54_52_629Z-debug.log

这意味着package.json没有被复制,我知道。 但我不知道如何修复它。 我认为错误在dockerfile中,但我无法解决。

有人能告诉我我做错了什么吗?


3
volumes:指令会用主机系统中的内容替换Dockerfile构建到映像中的所有内容,包括package.json文件。删除volumes:块能改善情况吗?您是在构建映像时遇到错误的吗(仅使用docker-compose build工作)还是在运行时遇到错误的? - David Maze
当我运行 docker compose up 时,出现了错误。 - Andres
你给了我一个想法。 在卷中我添加了以下内容 volumes: - ./backend:/src 然后它就可以工作了。 谢谢。 - Andres
1个回答

2

请通过编辑docker compose来尝试,您的卷存在问题,即复制整个项目目录。

替换

    volumes:
      - .:/src

使用

    volumes:
      - ./backend:/src

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接