Файл Dockerfile не КОПИРУЕТ файл pakcage json

#docker #docker-compose #dockerfile

Вопрос:

Моя структура папок выглядит следующим образом

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

Мой док-файл выглядит так

 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 amp;amp; npm install
COPY . /
CMD ["npm run start:dev"]
 

просто простой док-файл, ничего сумасшедшего

и мой докер-сочиняй, как

 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:*
 

Когда я делаю докер-сочиняю, появляется ошибка, говорящая

 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, но я не смог ее исправить

может ли кто-нибудь сказать мне, что я делаю не так?

Комментарии:

1. volumes: Директива заменяет все, что файл Dockerfile встроен в образ, содержимым из хост-системы, включая package.json файл. Улучшает ли удаление этого volumes: блока ситуацию? Вы получаете ошибку при создании образа (работает ли docker-compose build он сам по себе?) или при его запуске?

2. Я получил ошибку при запуске docker compose up

3. ты подал мне идею. в томах я добавляю «тома: — ./серверная часть:/src», и это работает, спасибо

Ответ №1:

Попробуйте отредактировать свою композицию docker, у вас есть проблема в ваших томах, которая заключается в копировании каталога проекта отверстия.

заменять

     volumes:
      - .:/src
 

с

     volumes:
      - ./backend:/src