Tauriとは?
ElectronのバックエンドがRust版と思えばいいです。
そして特徴的なのはElectronはChromiumを内蔵しますが、TauriはOSに付属するWebViewを利用する点です。これによりバンドルサイズが小さく維持でき、かつiOSやAndroidまで含めたマルチプラットフォームをサポートしようとしています。
今回は以下を目標にします。
- container内でGUIアプリを開発する
- windows/macOSで同じ環境が構築できる
features
devContainerの設定にfeaturesというのがあります。これはnodeやrustなど、container内に作成したい環境を簡便に入れられるようなシステムです。本来なら自力でdockerfileでapt-get,,,,と書かなければなりませんが、よく使われるものはここにスクリプトとして用意してあり、適宜組み合わせて利用できます。
今回はdesktop-liteというブラウザ経由でアクセス可能なデスクトップ環境を利用します。
https://github.com/devcontainers/features/tree/main/src/desktop-lite
windows
とりあえず動けばいいので、devContainerを起動して、container内から
npm create tauri-app@latest ./
を叩き、あとはnpm install, npm run tauri devで実行しました。
以下の内容で起動してブラウザ経由で動作が確認できました。
npm run tauri dev中に以下のエラーメッセージっぽいのが表示されますが、表示には問題ないようです。
>Could not create EGL sharing context.
devcontainer.json
{
"name": "Debian",
"build": {
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {},
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/devcontainers/features/rust:1": {}
},
"forwardPorts": [
6080
]
}
Dockerfile
FROM mcr.microsoft.com/devcontainers/base:bullseye
RUN apt-get update \
&& apt-get install -y libwebkit2gtk-4.0-dev libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev \
&& apt-get clean -y && rm -rf /var/lib/apt/lists/*
tauriの依存関係はこちらを参照してください。
macOS
上記と同じdevcontainer.json/Dockerfileで実行したところ、tauriアプリのwindowが立ち上がっていることは確認できるものの、window内が描画されません。
windowsと違ってsharingじゃないcontextもダメなようです。
>Could not create EGL sharing context.
>Could not create EGL context.
とりあえずwindows上での開発には困らないので一旦放置しますが、なんでだ、これ?
誰か助けてー
参考になったサイト
https://www.tunamaguro.dev/articles/tauri-docker/
https://pc.atsuhiro-me.net/entry/2023/04/12/040513
https://zenn.dev/st_little/articles/develop-gui-app-in-devcontainer
https://catalina1344.hatenablog.jp/entry/2023/03/12/192348
コメント