docker-compose не запускается с npm ERR!enoent ENOENT: нет такого файла или каталога, откройте «/usr/src/app/package.json» - PullRequest
0 голосов
/ 26 февраля 2019

Я построил образ из файла Docker для запуска узла и копирования в простом приложении для экспресс-работы с нодами, которое отлично работает.Построение образа позволяет запускать контейнер и bash, а локальные файлы копируются.Когда я использую это изображение в файле docker-compose вместе с изображением Монго, контейнеры создаются, но контейнер узла не запускается с ошибкой, если отсутствует 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

dockerfile

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

Как выглядит пакет.JSON пропал?Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 26 февраля 2019

Когда ваш docker-compose.yml говорит

volumes:
  - ./:/usr/src/app

, он скрывает все , что делается в Dockerfile, и заменяет его текущим каталогом.Если в вашем текущем каталоге нет файла package.json (может быть, вы переместили все, связанное с Docker, в подкаталог), это вызовет ошибку, которую вы видите.

Лично я бы просто удалил эти две строки, разработав мойприложение локально (без Docker, использующего каталог node_modules для каждого проекта для изоляции), и создайте образ Docker только тогда, когда я действительно буду готов к его развертыванию.

...