mix phx.gen.release
Исходный кодСоздаёт файлы релиза и необязательный Dockerfile для развёртывания на основе релизов.
Создаются следующие файлы релиза:
lib/app_name/release.ex— модуль релиза, содержащий задачи для выполнения миграций внутри релизаrel/overlays/bin/migrate— скрипт миграции для удобного запуска миграций системы релизовrel/overlays/bin/server— серверный скрипт для удобного запуска системы релизов с переменными среды и запуска веб-сервера Phoenix
Обратите внимание: каталог rel/overlays по умолчанию копируется в сборку релиза при запуске mix release.
Чтобы не создавать файлы, связанные с миграциями, используйте флаг --no-ecto. Чтобы принудительно создать эти файлы, используйте флаг --ecto.
Docker
При передаче флага --docker создаются следующие файлы Docker:
Dockerfile— Dockerfile для использования в любом стандартном развёртывании Docker.dockerignore— файл исключений Docker со стандартными настройками по умолчанию для Elixir
По умолчанию при сборке используется базовый образ, соответствующий активным версиям в вашей системе разработки на момент генерации. Чтобы изменить эти значения по умолчанию, укажите:
otp— версию OTPelixir— версию Elixir
Для расширенной настройки релиза вместе с этой задачей можно использовать задачу mix release.init. Дополнительные сведения см. в документации Mix.Release.
Если вы используете сторонние менеджеры пакетов JS, например npm или yarn, потребуется обновить созданный Dockerfile, добавив шаг для загрузки этих пакетов. Например:
...
ARG RUNNER_IMAGE="debian:..."
FROM node:20 as node
COPY assets assets
RUN cd assets && npm install
FROM ${BUILDER_IMAGE} as builder
...
COPY assets assets
COPY --from=node assets/node_modules assets/node_modules
...
Если вы используете esbuild через Node.js или другие инструменты сборки JavaScript, описанный выше подход также можно изменить, чтобы запускать их на этапе node, например:
FROM node:20 as node COPY assets assets RUN cd assets && npm install && node build.js --deploy
Обратите внимание, что может потребоваться настроить задачу assets.deploy так, чтобы она не запускала Node.js повторно.
Сводка
Функции
Функции
otp_vsn()Исходный код
© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix.hexdocs.pm/Mix.Tasks.Phx.Gen.Release.html