🐙

wslのユーザーIDとDockerコンテナ内のユーザーIDを合わせる方法

2024/04/02に公開

やりたいこと

windowsでDockerを利用するとなるとwslの利用がほぼ必須となる。
筆者もlaravelプロジェクトの開発環境をDockerで作成している。
そしてWSLにおいて、Windowsホスト側からDockerのphpコンテナ内のファイルを編集しようとすると、権限エラーが発生することがある。
そこでwslのユーザーとdockerコンテナ内のユーザーを合わせることでこのエラーを解決する。

手順

まずはwslのユーザーを確認する

id -u

筆者の環境では1000と返ってきた。

次にphpコンテナのimage作成用のdockerfile内に以下の記述を追加する

# Ubuntuベースのイメージの場合
RUN usermod -u 1000 www-data

# CentOS/Fedoraベースのイメージの場合 
RUN usermod -u 1000 nginx

WORKDIR /var/www
USER www-data  # または USER nginx

これで、WSLとDockerのphpコンテナ内のユーザーIDが同期され、権限の問題が解決する。

Discussion