Развернуть с помощью одного файла с помощью винокурни? - PullRequest
0 голосов
/ 31 октября 2018

Фон

У меня есть приложение OTP, которое мне нужно развернуть. Для этого я использую винокурню. Моя цель - передать на компьютер PROD самодостаточный файл, содержащий все и не требующий извлечения.

Обычный маршрут

Большинство людей, использующих винокурню, знают обычный маршрут:

  1. Пробег MIX_ENV=prod mix release
  2. Скопируйте архив в build/prod/rel/<name>/releases/<version>/<name>.tar.gz на сервер развертывания
  3. Извлечь тарбал
  4. Запустите код.

Цель

Моя цель - исключить шаг 3. Я не хочу ничего извлекать, я просто хочу скопировать релиз и запустить его, как исполняемый файл sudo.

-executable

В соответствии с документацией можно также запустить MIX_ENV=prod mix release --executable или MIX_ENV=prod mix release --transient. Это создаст псевдо-исполняемый файл, который не нужно извлекать.

Вопрос

Однако после выполнения команды MIX_ENV=prod mix release --executable я обычно ищу файл build/prod/rel/<name>/releases/<version>/<name>.run. Теоретически это должен быть файл, который мне нужно скопировать на сервер развертывания, но я нигде не могу его найти.

  • Какой файл мне нужно скопировать на сервер развертывания и где он находится?

1 Ответ

0 голосов
/ 26 декабря 2018

Попробуйте дважды проверить, что вы делаете. Для справки, я только что попробовал это, и он работал нормально Я использую Elixir 1.7.4 и ликеро-водочный завод 2.0.12.

Вот что я сделал:

  1. создать новый проект:

    mix new test_executable --sup
    
  2. добавлен ликеро-водочный завод к mix.exs,

  3. побежал

    mix release.init
    
  4. RAN:

    env MIX_ENV=prod mix release --executable
    

    Получил этот вывод:

    ==> Assembling release..
    ==> Building release test_executable:0.1.0 using environment prod
    ==> Including ERTS 10.2 from /usr/local/Cellar/erlang/21.2/lib/erlang/erts-10.2
    ==> Packaging release..
    Release successfully built!
    To start the release you have built, you can use one of the following tasks:
    
        # start a shell, like 'iex -S mix'
        > _build/prod/rel/test_executable/bin/test_executable.run console
    
        # start in the foreground, like 'mix run --no-halt'
        > _build/prod/rel/test_executable/bin/test_executable.run foreground
    
        # start in the background, must be stopped with the 'stop' command
        > _build/prod/rel/test_executable/bin/test_executable.run start
    
    If you started a release elsewhere, and wish to connect to it:
    
        # connects a local shell to the running node
        > _build/prod/rel/test_executable/bin/test_executable.run remote_console
    
        # connects directly to the running node's console
        > _build/prod/rel/test_executable/bin/test_executable.run attach
    
    For a complete listing of commands and their use:
    
        > _build/prod/rel/test_executable/bin/test_executable.run help
    
  5. Теперь я могу скопировать файл в другое место и запустить его:

    cp _build/prod/rel/test_executable/bin/test_executable.run /tmp
    cd /tmp
    ./test_executable.run console
    Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe] [dtrace]
    
    Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help)
    iex(test_executable@127.0.0.1)1>
    
...