Elixir медленно выполняет запросы в докере с включенным перегрузчиком кода Phoenix - PullRequest
1 голос
/ 14 июня 2019

В настоящее время я использую docker-sync, но он часто вылетает при смене веток, когда меняется много файлов. Я пытаюсь найти способ заставить все работать без него, просто используя тома, но я сталкиваюсь с типичными проблемами производительности тома Mac.

В этой конфигурации у меня все работает быстро внутри контейнера, однако, когда перезагружатель кода включен, каждый сетевой запрос замедляется (я предполагаю, потому что он сканирует весь каталог). Есть ли обходной путь для этого, который все еще будет перекомпилировать изменения?

version: '3.7'

services:
  phoenix:
    image: us.gcr.io/zipbooks-157701/phoenix
    volumes:
      - ./phoenix-api:/app/phoenix-api:delegated
      - /app/phoenix-api/deps/
      - /app/phoenix-api/_build/
    environment:
      DB_PASSWORD: root
      DB_HOSTNAME: mysql
      TESTING_DB_HOSTNAME: mysql
      REDIS_HOST: redis
    depends_on:
      - mysql
      - redis

...

1 Ответ

2 голосов
/ 15 июня 2019

Есть две вещи: средство перезапуска кода, которое компилирует ваш код при каждом запросе, и средство перезапуска, которое сканирует вашу файловую систему на наличие изменений. Перегрузчик кода должен быть так же быстр, как и вызывать mix compile. Live Reloader не является обязательным (просто для перезагрузки через веб-сокеты).

Если проблема в живом перегрузчике, вы можете либо удалить его, либо ограничить каталоги, за которыми он следит за производительностью. См. Соответствующее примечание в README: https://github.com/phoenixframework/phoenix_live_reload#backends

...