はじめに
Unity2019.3からAsset Pipeline v2が追加されてUnity Acceleratorを組み合わせるとインポートしたアセットをキャッシュおよび共有することができます。
それまでのUnityにもAsset Pipeline v1とキャッシュサーバーでキャッシュできていましたが、Unity Acceleratorには以下の違いがあります。
- キャッシュサーバーと同居できる
- Collaborateのキャッシュに対応
- 不要なキャッシュを定期的にクリーンアップ
- 転送されたバイト数や接続されたエディターなどの情報をPrometheusから利用できるメトリクスで公開
フォーラムの以下のスレッドによるとDockerHubでイメージが公開されています。
- Consider making a Docker Container for Accelerator?
- https://hub.docker.com/r/unitytechnologies/accelerator
Unity AcceleratorはPrometheusとダッシュボードのGrafanaを組み合わせるとメトリクスを可視化できるのでdocker-composeでサービス化しました。
Dockerでサービス化
設定ファイル
accelerator.env
COLLAB_REGISTRATION_TOKEN=ft0bJvbRD
DISABLE_USAGE_STATS=yes
-
Unity Collaborateと連携する場合は
COLLAB_REGISTRATION_TOKEN
にトークンを設定します。 - 統計情報の送信を抑制する場合は
DISABLE_USAGE_STATS
に任意の値を設定します。
サービスを実行
docker-compose up -d
サービスを起動するとそれぞれ以下からアクセスできます。
- Unity Acceleratorおよびキャッシュサーバー: 起動したPCのIPアドレス
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000
- 初期アカウントとパスワードは
admin
とadmin
- 初期アカウントとパスワードは
GrafanaではUnity - Manual: Unity Acceleratorの一覧にあるメトリクスを扱えます。
Local Administraotr Dashboard
v1.0.272+gb7c26b9からLocal Administrator Dashboardが追加されて http://localhost:10080 からアクセスできるようになりました。
ConfigurationとLogsは以下のコマンドでパスワード設定が必要です。
docker-compose exec accelerator /agent/unity-accelerator tool adminpw mysupersecretpassword
公式イメージ公開前にDocker化で工夫したこと
Unity AcceleratorをダウンロードするURLからバージョンが分からないのでバージョンを確認する方法を用意しています。- v1.0.196+ge1f9988で修正されました。
キャッシュサーバー追加でインストーラーを非対話モードで実行するとnpmのパスが展開されないバグがあるので対話モードprintfで強引にインストールしています。(バグ報告済み) - v1.0.242+gf11031dで修正されました。
v1.0.196+ge1f9988で初回起動時などpidファイルがなかったり空の時に起動できないバグがあるのでパッチを当てています。 - 公式イメージが公開されたので独自Dockerfileから切り替えました。