【问题标题】:Elixir requests slow in docker with phoenix code reloader onElixir 在 docker 中请求缓慢,凤凰代码重新加载器开启
【发布时间】:2019-06-16 02:48:42
【问题描述】:

我目前使用 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

...

【问题讨论】:

    标签: docker elixir phoenix-framework


    【解决方案1】:

    有两件事:代码重新加载器,它在每个请求上编译您的代码,以及实时重新加载器,它扫描您的文件系统以进行更改。代码重新加载器应该与调用mix compile 一样快。实时重新加载器是完全可选的(它只是通过 websockets 重新加载)。

    如果问题出在实时重新加载器中,您可以将其删除,也可以限制它监视的目录以提高性能。请参阅 README 中的相关说明:https://github.com/phoenixframework/phoenix_live_reload#backends

    【讨论】:

    • 当我设置code_reloader: false 时,请求的一切都很快,除了请求之外,是否有另一种方法可以触发mix compile 调用,以便可以获取更改但不会减慢请求。
    • 您也可以禁用代码重新加载器,这只是为了方便。在这种情况下,您可以使用iex -S mix phx.server 启动Phoenix,并在需要重新编译时在终端中显式键入recompile
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多