はじめに
WSL+DevContainerでの開発環境でファイルの編集が出来なくなりました。
ひとまず解決することは出来たので備忘録として残します。
背景
WSL+DevContainerでフロントエンドの開発環境を構築しています。
今回はNodejsのバージョンをアップデートするためにDockerfileを編集してビルドをし直しました。
すると、chownによるファイルオーナーの変更が効かずファイルの編集が出来なくなってしまいました。
その後、Nodejsのバージョンを戻しDockerfileを差分のない状態にしても改善は見られませんでした。
Dockerfileは下記のようなイメージです。
FROM node:22-alpine
RUN mkdir -p /app/node_modules &&\
chown -R node:node /app
USER node
ENV HOST 0.0.0.0
EXPOSE 3000
このDockerfileでdocker-compose build
とdocker-compose up
をし、コンテナ上でファイルの権限を確認しても、設定している通りのnodeにならずrootのままになってしまいました。
解決
Dockerバージョンのアップデート・ダウングレード、WSL再インストール、Dockerfileの記述の変更など色々と試したのですが、最終的にはWSLのユーザーをrootではなく任意のユーザーにすることで解決しました。
WSLインストール時にUNIXユーザー名を聞かれるのですが、今までは特に入力せずrootユーザーで作業していました。
そこで任意のユーザー名およびパスワードを入力することで、正常にファイルオーナーが設定できるようになりました。
おわりに
以前は出来ていたのに何故急に出来なくなったのか、何故この対応で解決したのかの原因までは調査出来ていませんが、もし同じことで悩んでいる方がいれば参考になると幸いです。
もし原因が分かれば追記しようと思います。