私たちは蒸留所を使って、 phoenixアプリケーションで実行可能ビルドリリースを作成しています。我々は、デジタル海洋にアプリケーションをデプロイするためにドッカーを使用しています。私たちは他のマシンとコードを共有したくないので、コンパイルされたファイルを実行可能ファイルとして実行したいので、コマンドラインからリモートマシン上で実行することができます。phoenixで実行可能なリリースビルドを実行するにはどうすればよいですか?
だからいくつかの研究の後、私たちはdistillery plugin我々はリリースを作成することができます
mix release --executable
を使用してビルドを作成し、実行可能なリリースを構築することがわかりました。それはあなたがこのエラーを解決する方法を私を助けてください、私はフォアグラウンドコマンドに
> $ _build/dev/rel/project/bin/project foreground [info] Application
> project exited: Project.start(:normal, []) returned an error:
> shutdown: failed to start child: Project.Endpoint
> ** (EXIT) shutdown: failed to start child: Phoenix.CodeReloader.Server
> ** (EXIT) an exception was raised:
> ** (UndefinedFunctionError) function Mix.Project.config/0 is undefined (module Mix.Project is not available)
> Mix.Project.config()
> (phoenix) lib/phoenix/code_reloader/server.ex:29: Phoenix.CodeReloader.Server.init/1
> (stdlib) gen_server.erl:328: :gen_server.init_it/6
> (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 {"Kernel pid
> terminated",application_controller,"{application_start_failure,project,{{shutdown,{failed_to_start_child,'Elixir.Project.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.CodeReloader.Server',{undef,[{'Elixir.Mix.Project',config,[],[]},{'Elixir.Phoenix.CodeReloader.Server',init,1,[{file,\"lib/phoenix/code_reloader/server.ex\"},{line,29}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,247}]}]}}}}},{'Elixir.Project',start,[normal,[]]}}}"}
>
> Crash dump is being written to: erl_crash.dump...done Kernel pid
> terminated (application_controller)
> ({application_start_failure,project,{{shutdown,{failed_to_start_child,'Elixir.Project.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Code
を実行した後、次のエラーを取得していますこれらの
[email protected]:project$ _build/dev/rel/project/bin/project foreground
[email protected]:project$ _build/dev/rel/project/bin/project start
[email protected]:project$ _build/dev/rel/project/bin/project console
を実行するために、3つのコマンドを提供しますか?
誰かが実行可能なリリースファイルを作成するためのより良いアプローチを持っている場合は、私も聞いて嬉しいです。どのLinuxベースのシステムでもDockerを使用してソースコードを公開することなく展開することができます。
さらに詳しい情報を提供する必要があるのか、質問の修正が必要かどうか教えてください。 ありがとう
あなたは 'MIX_ENV = prod mix release --executable --env = prod'を試すことができますか? '_build/prod'でリリースを入手するべきです。 – Dogbert