プライベートのmacにてDocker Desktopの利用をやめ,Docker CLI + Lima環境に移行しました.
その際にASP.NET Core + Dockerで構築したプロジェクトが動作するか試してみたのですが,デフォルトのLimaではASP.NET Coreコンテナのビルド時にエラーが起こってしまいました.
当記事では発生した問題と,その解決方法について簡単にまとめます.
環境
- macOS Sequoia 15.4
- Lima version 1.0.7
発生した問題
単にlimactl start
コマンドで起動したデフォルト設定のLimaでdocker compose up -d
を試みたところ,以下のようなエラーが発生しました.
/usr/share/dotnet/sdk/8.0.xxx/NuGet.targets(174,5): error : Read-only file system : '/app/src/obj/2134170y-3021-3548-8271-2e83u6e22s8ba.tmp'
ASP.NET Coreのビルドの際,objディレクトリにファイルを生成するようですが,Limaのインスタンスからではその書き込み権限がなく,エラーとなっている様子です.
解決方法(Limaの初期設定)
そこで以下の手順でLimaの環境を構築したところ,無事動作するようになりました.
1. Limaのインスタンス作成
以下のコマンドを実行して,インスタンスを作成します.
limactl create --name=[インスタンス名] template://docker
コマンド実行後にいくつか操作の選択肢を聞かれるので,Open an editor to review or modify the current configuration
を選択します.
ローカルの~/.lima/[インスタンス名]/lima.yaml
が開くので.mounts:
の箇所にプロジェクトファイルのパスを記載します.
mounts:
- location: "~/your/project/path" # 追加
writable: true
これによりLimaから指定パス以下のファイルへの書き込みが可能となります.
上記w追記後,以下のコマンドによりインスタンスを起動します.
limactl start [インスタンス名]
2. .NET SDKのインストール
.NET SDKをコンテナでも利用したい場合は,そのインストールが必要です.
lima shell [インスタンス名]
コマンドでインスタンスのシェルを開き,以下のコマンドで.NET SDK(ここでは.NET 8系)をインストールします.
sudo apt update && sudo apt -y install dotnet-sdk-8.0
3. 設定完了
これにてLimaの初期設定は完了となります.
あとはlima docker compose up -d
コマンドをローカルで実行,あるいはLimaのシェル内でdocker compose up -d
する等でコンテナを立てれば,プロジェクトが動作するようになります!