Docker запускает основной процесс в своих контейнерах, поэтому остановка основного процесса также остановит контейнер.
Я попытаюсь ответить на ваш вопрос, но я не думаю, что вы должны работать какчто в среде разработчиков.
Отвечая на ваш вопрос, вы можете «перехватить» контейнер в основном процессе, а затем просто взломать контейнер и выполнить запуск приложения.
Для того, чтобы перехватитьконтейнер, просто измените docker-compose command
на:
command: while true; do sleep 1; done;
Чтобы войти в интерактивный bash в контейнере:
docker exec -it <CONTAINER-ID> bash
И затем вы можете запустить или остановитьприложение узла.
Кажется, что проблема, с которой вы сталкиваетесь, заключается в контейнере, требующем много времени для запуска, вам, вероятно, следует переупорядочить ваш Dockerfile, чтобы предотвратить повторную загрузку всех зависимостей (или другого длинного процесса) при каждом изменении файла.
Вы должны поместить свою команду COPY
после всех команд, которые должны сохраняться в разных сборках, и использовать преимущества наложения изображений докера.
Если вам нужна функция «горячей перезагрузки», вы можете исследовать горячую перезагрузку Webpack.Вам потребуется привязать том хоста к рабочему каталогу контейнера, чтобы веб-пакет правильно просматривал файлы и перезагружал приложение.