日本語 | English
compose.yaml を WSL コンテナ (wslc) で動かす。wslc には compose も Docker 互換 API もまだないので、
docker compose のよく使う範囲だけを、依存クレートなしの Rust で実装している。
WSL コンテナ (wslc) が使える Windows 11 が必要。
winget install danything.wslc-composeまたは Releases から wslc-compose.exe をダウンロードして PATH の通った場所に置く。
wslc-compose up -d
wslc-compose ps
wslc-compose logs -f web
wslc-compose exec web sh
wslc-compose run --rm web php artisan migrate
wslc-compose down -v
wslc-compose config # 実際に実行する wslc のコマンドを表示全コマンドは wslc-compose --help。メッセージは Windows の表示言語が日本語なら日本語、それ以外は英語
(WSLC_COMPOSE_LANG=ja|en で切り替えられる)。
services:imagebuild(contextdockerfileargstarget)commandentrypointenvironmentenv_fileportsvolumes(バインド / 名前付き / 名前なし)tmpfsnetworks(aliases)depends_on(service_started/service_healthy/service_completed_successfully)healthchecklabelscontainer_nameworking_diruserhostnamettystdin_openshm_sizestop_signalstop_grace_periodprofiles- トップレベルの
namenetworks(externalnamedriverinternal)volumes(externalnamedriver) - 変数展開 (
${VAR:-default}など) と.env、YAML のアンカー / マージキー upは設定とイメージのハッシュをラベルに持ち、変わったコンテナだけ作り直す
wslc に対応する機能がない restart と init は警告を出して無視する。
Windows に Rust を入れず、wslc のコンテナで Windows 向けにクロスコンパイルする。
./dev/cargo.ps1 test
./dev/cargo.ps1 clippy --all-targets --target x86_64-pc-windows-gnu
./dev/cargo.ps1 build --release --target x86_64-pc-windows-gnu # exe は wslc-compose-target ボリュームの中examples/demo で一通りの動作を確認できる (web が redis の healthy を待って起動する)。
v* のタグを push すると、CI が Windows でビルドして exe と SHA256SUMS をリリースに添付し、winget (microsoft/winget-pkgs) に更新の PR を出す (シークレット WINGET_TOKEN に public_repo と workflow スコープのクラシック PAT が必要)。