Как я могу использовать Erlang с Docker для запуска приложения Phoenix?

Я хочу использовать образ докера в производственной среде для запуска контейнера 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), и я бы предпочел не полагаться на другой зависимости, если у меня тоже нет. Кроме того, похоже, что если вы используете ликеро-водочный завод, вам также придется использовать пользовательские образы докеров для запуска кода, чего я стараюсь избегать.

Возможно ли что-то подобное? Если да, то кто-нибудь знает решение DIY?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
0
190
1

Ответы 1

Я предлагаю вам использовать винокурня для создания двоичного файла.

Затем просто запустите контейнер alpine, смонтируйте к нему distillery release, запустите двоичный файл. Да, вы можете использовать Supervisor для его запуска.

Вы можете использовать remote_console distillery для связи с консолью этого двоичного файла.

Другие вопросы по теме