如何将Erlang与Docker结合使用以运行Phoenix应用程序?

时间:2018-12-08 01:27:12

标签: docker erlang elixir phoenix-framework

我想在生产中使用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解决方案吗?

1 个答案:

答案 0 :(得分:0)

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

然后只运行一个alpine容器,将distillery release装入其中,运行二进制文件。是的,您可以使用超级用户运行它。

您可以使用酿酒厂的remote_console链接到该二进制文件的控制台。