Node.js проблема объема приложения с docker -композицией - PullRequest
0 голосов
/ 24 марта 2020

У меня есть Django + React-приложение, которое нужно запустить с docker -compose.
Я уже запустил его локально с помощью npx create-реагировать-app.
Оно отлично работает, если я его запускаю только с этим сервисом:

docker-compose run --rm -p 3000:3000 frontend npm start    

Но он ломается, если я запускаю все вместе с:

docker-compose up    

Это журналы:

betcomm-react |
betcomm-react | > frontend@0.1.0 start /app
betcomm-react | > react-scripts start
betcomm-react |
betcomm-react | ℹ 「wds」: Project is running at http://172.29.0.4/
betcomm-react | ℹ 「wds」: webpack output is served from
betcomm-react | ℹ 「wds」: Content not from webpack is served from /app/public
betcomm-react | ℹ 「wds」: 404s will fallback to /
betcomm-react | Starting the development server...
betcomm-react |
betcomm-react exited with code 0

Что я здесь отсутствует?

Структура проекта:

- backend
| - Dockerfile
| - Django Project
- frontend
| - node_modules
| - public
| - src
| - package.json

Это Dockerfile и docker -compose.yml

version: '3.7'

services:
  db:
    ... etc
  app:
    image: batcomm-django
    build: 
      context: ./backend
      dockerfile: Dockerfile
    container_name: betcomm-django
    ports:
      - 8000:8000
    volumes:
      - ./:/app
    depends_on:
      - db
    env_file:
      - .env.dev
  frontend:
    image: betcomm-react
    build: 
      context: ./frontend 
      dockerfile: Dockerfile
    container_name: betcomm-react
    working_dir: /app
    command: "npm start"
    depends_on: 
      - app
    ports:
      - 3000:3000
    volumes:
      - ./frontend/:/app/
      - node-modules:/app/node_modules

volumes:
  postgres_data:
  node-modules:

EDIT
Я понял, что вызов одного и того же Dockerfile с автономным docker вызывает тот же разрыв, если я также добавляю том в папку / app. Я хочу добавить этот том, чтобы каждое изменение в контейнере также изменялось на моем хосте:

Это прекрасно работает:

docker run -p 3001:3000 --rm -it betcomm-react-test /bin/sh

Это ломается:

docker run -v frontend:/app -p 3001:3000 --rm -it betcomm-react-test /bin/sh

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /app/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-03-24T18_42_25_066Z-debug.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...