【问题标题】:How can I use Erlang with Docker to run a Phoenix application?如何使用 Erlang 和 Docker 来运行 Phoenix 应用程序?
【发布时间】:2019-05-09 18:16:33
【问题描述】:

我想在生产环境中使用 docker 镜像来运行 Phoenix 容器,但是,由于 Elixir 只是 Erlang 之上的一层,感觉在我的生产环境中运行 Elixir 可能会浪费空间。

理想情况下,我可以将整个 Phoenix 应用程序编译成 Erlang,然后使用来自 erlang:alpine 的图像在生产环境中实际运行该应用程序。像这样的...

FROM elixir:alpine as builder
(install dependencies and copy files)
RUN mix compile_app_to_erlang

FROM erlang:alpine
COPY --from=builder /path/to/compiled/erlang /some/other/path
CMD ["erlang", "run"]

注意:compile_app_to_erlang 不是一个真正的命令,但我正在寻找类似的东西。另外,我不知道erlang是怎么运行的,所以里面的代码完全是编出来的。

另外,据我所知,有一个名为 distillery 的项目可以做到这一点,但这似乎不应该太复杂(如果我知道 erlang 是如何工作的),我会如果我没有,而不是依赖另一个依赖项。另外,如果您使用酿酒厂,您还必须使用定制的 docker 映像来运行代码,这是我尽量避免的。

这样的事情可能吗? 如果是这样,有人知道 DIY 解决方案吗?

【问题讨论】:

    标签: docker erlang elixir phoenix-framework


    【解决方案1】:

    我建议你使用distillery 来构建二进制文件。

    然后运行一个alpine 容器,将distillery release 挂载到它,运行二进制文件。是的,你甚至可以使用 supervisor 来运行它。

    您可以使用 distillery 的remote_console 链接到此二进制文件的控制台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2017-01-04
      • 2016-11-07
      • 2013-05-16
      • 2017-06-29
      • 2019-11-05
      • 2021-01-12
      相关资源
      最近更新 更多