🖥️

Phoenix をデスクトップアプリとして使う

2024/05/22に公開

Phoenix を使ってデスクトップアプリを作成する。

Desktop を使ったり Tauri に Phoenix を組み込んだり することもできるが、UIがただのブラウザでいいなら Phoenix そのままでもできる。

手順

  1. rel/vm.args.eex を編集する。
    通常はアプリを起動したら epmd も起動するが、epmd はアプリを殺しても死なないので、CLI から止めないと epmd.exe が削除できなくなってしまう。そのため epmd が起動しないようにする。
    ## Disable epmd
    -start_epmd false
    -dist_listen false
    
  2. rel/overlays/bin/server(.bat) を編集する。
    環境変数をここに追加し、DBのマイグレーションとWebページを開くのをここでやってしまう。
    set PHX_SERVER=true
    
    rem Set the environment variables for the server
    set DATABASE_PATH=./database.db
    set SECRET_KEY_BASE=(value generated by `mix phx.gen.secret`)
    set PHX_HOST=127.0.0.1
    set PORT=38306
    
    rem Migrate the database (if use db)
    call "%~dp0\phx_local" eval MyApp.Release.migrate
    
    rem Open the browser
    start http://%PHX_HOST%:%PORT%
    
    call "%~dp0\phx_local" start
    
  3. config/runtime.exs を編集する。
    よくわかっていないが、無編集だと h_ttp://127.0.0.1:<port> にアクセスできない。
    # ...
    
    config :phx_local, MyAppWeb.Endpoint,
      url: [host: host, port: port, scheme: "http"],
      http: [ip: {127, 0, 0, 1}, port: port],
      secret_key_base: secret_key_base
    
    # ...
    
  4. 通常と同じようにリリース。
    1. MIX_ENV=prod mix assets.deploy
    2. MIX_ENV=prod mix release
GitHubで編集を提案

Discussion