У меня есть 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