DELAEMON BLOG

Live as if you were to die tomorrow. Learn as if you were to live forever.

phoenix アプリのフロントエンド(html/css/javascript)更新をsystemdのunitファイルに追加した

今のsystemd unitファイルはこんな感じ。フロントエンド更新のためにExecStartPreを追加した。

[root@host ~]# cat /usr/lib/systemd/system/phoenix.service
[Unit]
Description = hello phoenix

[Service]
EnvironmentFile=/etc/environments/phoenix
WorkingDirectory=/home/dela/www/hello/
ExecStartPre=/usr/local/src/elixir-1.1.1/bin/elixir /usr/local/src/elixir-1.1.1/bin/mix clean
ExecStartPre=/usr/local/src/elixir-1.1.1/bin/elixir /usr/local/src/elixir-1.1.1/bin/mix deps.get --only prod 
ExecStartPre=node node_modules/brunch/bin/brunch build 
ExecStartPre=/usr/local/src/elixir-1.1.1/bin/elixir /usr/local/src/elixir-1.1.1/bin/mix phoenix.digest
ExecStartPre=/usr/local/src/elixir-1.1.1/bin/elixir /usr/local/src/elixir-1.1.1/bin/mix compile.protocols
ExecStart=/usr/local/src/elixir-1.1.1/bin/elixir -pa _build/prod/consolidated -S /usr/local/src/elixir-1.1.1/bin/mix phoenix.server
Restart = always
Type = simple
User = dela

[Install]
WantedBy = multi-user.target

以下、追加したコマンド

mix clean

Delete generated application files.
前回のコンパイル結果を削除
Mix.Tasks.Clean

mix deps.get --only prod 

Get all out of date dependencies, i.e. dependencies that are not available or have an invalid lock. --only - only fetch dependencies for given environment.
プロダクトモード用の依存パッケージの解決
Mix.Tasks.Deps.Get

brunch build

builds a project for distribution. By default it enables minification.
フロントエンドのコンパイル
brunchって知らなかった。phoenixのアプリのデフォルトのfrontend build tool。glupとかに変更もできる。
Brunch - ultra-fast HTML5 build tool

mix phoenix.digest

Digests and compress static files.
コンパイル結果をphoenixアプリが参照してるディレクトリへ配置
Mix.Tasks.Phoenix.Digest – Phoenix v1.0.3