Как изменить путь к файлу для package.json в Docker? - PullRequest
0 голосов
/ 21 мая 2019

Я настраиваю Docker для личного проекта и сталкиваюсь с ошибкой пути.

Вот мой Dockerfile:

FROM node:latest

WORKDIR /Users/Alex/funky-ducks/mediumrare/mediumrare

COPY ./ ./ 

RUN  npm install

CMD ["/bin/bash"]

Мой файл docker-compose.yml:

version: '3.7'

services:
   mediumrare_docker:
      container_name: container001
      build: /Users/Alex/funky-ducks/mediumrare/mediumrare
      command: npm start
      ports:
         - "3000:3000"

Это моя файловая структура каталогов (примечание ниже docker-compose.yml "mediumrare" - это front-end / mediumrare_server - это бэкэнд):

.
└── mediumrare
    ├── Dockerfile
    ├── README.md
    ├── docker-compose.yml
    ├── mediumrare
    │   ├── README.md
    │   ├── node_modules
    │   ├── package-lock.json
    │   ├── package.json
    │   ├── public
    │   ├── src
    │   └── yarn.lock
    ├── mediumrare_server
    │   ├── node_modules
    │   ├── package-lock.json
    │   ├── package.json
    │   └── server.js
    ├── package-lock.json
    └── package.json

Я попытался создать файл package.json в верхнем каталоге и зафиксировать файл package-lock.json.

Когда я запускаю docker-compose up, я получаю следующее сообщение об ошибке:

Creating container001 ... done
Attaching to container001
container001         | npm ERR! path /Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json
container001         | npm ERR! code ENOENT
container001         | npm ERR! errno -2
container001         | npm ERR! syscall open
container001         | npm ERR! enoent ENOENT: no such file or directory, open '/Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json'
container001         | npm ERR! enoent This is related to npm not being able to find a file.
container001         | npm ERR! enoent 
container001         | 
container001         | npm ERR! A complete log of this run can be found in:
container001         | npm ERR!     /root/.npm/_logs/2019-05-21T17_39_18_298Z-debug.log
container001 exited with code 254

Я вижу, что когда он собирается, он ищет файл package.json внутри каталога "mediumrare_server". Однако файл package.json является верхним каталогом mediumrare. Почему он не находит этот файл и как я могу исправить эту ошибку? Спасибо!

1 Ответ

0 голосов
/ 21 мая 2019

Я попробовал подобный код локально, и он работал.Ваше изображение может быть устаревшим.Восстановите его, запустив docker-compose up --build


Несколько замечаний относительно вашего Dockerfile

  1. Сначала COPY package.json и package-lock.json, запустите npm install, затем COPY исходные файлы.Это позволит вам использовать преимущества многоуровневого кэша.
  2. Существует ли какая-либо причина, по которой у вас в контейнере та же структура каталогов, что и на хосте?
  3. У вас может быть build . вместо полного путив вашем docker-compose.yml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...