Я использую бэкэнд Rails с интерфейсом Angular внутри образа Docker. Хост-компьютер работает под управлением OSX.
Службы работают нормально, когда я запускаю docker-compose up --build
, но любые изменения в файлах внешнего интерфейса занимают почти час, чтобы вызвать горячую перезагрузку.
Если я запускаю процесс сборки вручную в сеансе bash для контейнера ng (ng build --aot
), это занимает около 2 минут. Не оптимально, но лучше, чем час. Тот же самый процесс сборки занимает намного больше времени, когда он является частью горячей перезагрузки. Я не уверен, почему.
Я попробовал решение, упомянутое здесь, об открытии порта для горячей перезагрузки веб-пакета. и добавив номер порта внутри docker-compose.yml
, но я не увидел разницы в поведении.
Часть Rails работает нормально. Изменение файла почти сразу заметно в контейнере.
Но для контейнера ng все не так быстро. Каталог node_modules исключен из моего образа Docker, поэтому при сборке Docker он заполняет свой собственный каталог node_modules внутри образа. Это должно означать, что нет проблем с синхронизацией модулей узла на хост-компьютере с тем, что находится в образе.
Я провел некоторое исследование, и похоже, что есть возможность запустить ng eject
, что позволит мне настроить конфигурацию веб-пакета. Есть несколько предложений по изменению конфигурации для ускорения работы, например. вот этот. Однако, учитывая, что опция извлечения не поддерживается в ng 6, я бы предпочел не идти по этому пути.
Любые идеи о том, как я могу ускорить время компиляции для этого приложения ng?
node_modules
хост-компьютера (он был добавлен в файл.dockerignore
). Таким образом, ничего из этого каталога не синхронизируется между хост-компьютером и образом Docker. 09.08.2018dockerignore
, он также будет игнорироваться во время работы контейнеров. Но вы говорите, что файлdockerignore
игнорируется после запуска контейнеров. Это правильно? 10.08.2018