Docker-составить перезапись package.json - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь запустить простое приложение реакции, используя Dockerfile и docker-compose.Однако, когда я запускаю команду docker-compose up, происходит сбой с ошибкой, что package.json не существует.Я предполагаю, что монтирование тома докера каким-то образом перезаписывает этот файл.

Может кто-нибудь подсказать, пожалуйста, какой-нибудь обходной путь к нему.

Dockerfile

FROM node:alpine
WORKDIR /apps
COPY package.json .
RUN npm install

COPY . .
CMD ["npm","run","start"]

Docker-compose.yml

version: '3'
services:
  react-app:
    build: 
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - /apps/node_modules
      - ./:/apps

Вывод

docker-compose up --build
Building react-app
Step 1/6 : FROM node:alpine
 ---> ebbf98230a82
Step 2/6 : WORKDIR /apps
 ---> Using cache
 ---> 52ab3e742158
Step 3/6 : COPY package.json .
 ---> Using cache
 ---> b88a10e48c6f
Step 4/6 : RUN npm install
 ---> Using cache
 ---> 1da097307540
Step 5/6 : COPY . .
 ---> Using cache
 ---> c748991eb661
Step 6/6 : CMD ["npm","run","start"]
 ---> Using cache
 ---> e138b3c17689
Successfully built e138b3c17689
Successfully tagged frontend_react-app:latest
Starting 86e0c20b7955_frontend_react-app_1 ... done
Attaching to 86e0c20b7955_frontend_react-app_1
86e0c20b7955_frontend_react-app_1 | npm ERR! path /apps/package.json
86e0c20b7955_frontend_react-app_1 | npm ERR! code ENOENT
86e0c20b7955_frontend_react-app_1 | npm ERR! errno -2
86e0c20b7955_frontend_react-app_1 | npm ERR! syscall open
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent ENOENT: no such file or directory, open '/apps/package.json'
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent This is related to npm not being able to find a file.
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent
86e0c20b7955_frontend_react-app_1 |
86e0c20b7955_frontend_react-app_1 | npm ERR! A complete log of this run can be found in:
86e0c20b7955_frontend_react-app_1 | npm ERR!     /root/.npm/_logs/2019-02-12T14_36_59_257Z-debug.log
86e0c20b7955_frontend_react-app_1 exited with code 254

Структура папки

--node_modules
--package.json
--Dockerfile.dev
--Docker-compose.yml

EDIT ---

Попытка заставить мое приложение реагировать на изменения в источникекод без необходимости перестраивать изображение.Для этого мне нужно это крепление для работы.

Ответы [ 2 ]

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

Не знаю, почему, но выполнение ниже в моем файле docker-compose.yml сработало для меня.

volumes:
      - '.:/apps/'
      - /apps/node_modules/

По сути, я заключил первое монтирование в одинарные кавычки: p

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

Точно, вы перезаписываете свой каталог /app при запуске вещи.

Вы используете bind mount , который в отличие от volume всегда перезаписывает контейнерпапка с содержимым папки хоста.

Я сомневаюсь, что вам нужно это монтирование - ваше приложение копируется на этапе сборки.Просто удалите эту строку из docker-compose.yml и наслаждайтесь.

...