我想在生产中使用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解决方案吗?
答案 0 :(得分:0)
我建议您使用distillery来构建二进制文件。
然后只运行一个alpine
容器,将distillery release
装入其中,运行二进制文件。是的,您可以使用超级用户运行它。
您可以使用酿酒厂的remote_console
链接到该二进制文件的控制台。