こんにちは、Fusicのmockmockチームエンジニアのジホです。
この記事は
- Fusic Advent Calendar24日目の記事です。
- Linux上でLaradockを使ったLaravelプロジェクト構築で会ったpermission deniedに関して書きます。
書く理由は
Laradockのdocker-compose.ymlを見てでかい。どこ見ればいいのがわからない時に参考になって欲しいからです。
環境
Linux
- CentOS Linux release 7.7.1908 (Core)
Docker Compose
- docker-compose version 1.25.0, build b42d419
Docker
- Docker version 19.03.5, build 633a0ea
構成図
phpというディレクトリーの配下にLaradockがあるLaradock、Laravalがある/project-z/docker-laravel/を作りました。
-
Laradockはgit clone https://github.com/laradock/laradock.gitしたものです。 -
/project-z/docker-laravel/はproject-zでcomposer create-project --prefer-dist laravel/laravel docker-laravel -vvvしたものです。

permission deniedを順番に紹介
-
LaravelのDB設定のために
/project-z/docker-laravel/.envを修正しようとするとpermission denied

-
最初はdocker compose up出来たのに、何ん回目でいきなりnginxのssl周りでpermission denied

permission deniedの原因と解決
-
LaravelのDB設定のために
/project-z/docker-laravel/.envを修正しようとするとpermission denied -
最初はdocker compose up出来たのに、何ん回目でいきなりnginxのssl周りでpermission denied
-
よくわからないけど
/storage/logs/周りでpermission denied -
よくわからないけど
/storage/framework/views/周りでpermission denied- 原因 : Laravelのソースコードの権限をDockerコンテナの中と外で適切に両方を対応してない。
- 解決 : Laradockの
/laradock/.envにあるWORKSPACE_PUIDとWORKSPACE_PGIDをDockerコンテナの外を基準として揃える。VSCodeなどで作業するなら、Dockerコンテナの外で作業することになるからです。- Laravelプロジェクト生成時点次第で
sudo chown vagrant -R ...を1回する必要がある可能性があります。例えば、composer create-project --prefer-dist laravel/laravel docker-laravel -vvvした時点でdocker-laravelのファイルとディレクトリー権限がずれていることがあります。
- Laravelプロジェクト生成時点次第で
まとめ
- Dockerコンテナの中と外のuserのidとgroup idが揃えているか確認しましょう。
-
WORKSPACE_PUIDとWORKSPACE_PGID、PHP_FPM_PUIDとPHP_FPM_PGIDをちゃっと設定したら大体大丈夫です。-
/laradock/.envにあります(Laradockのenvファイル)
-
参考
https://laradock.io/getting-started/
https://docs.docker.com/compose/compose-file/#env_file
https://laravel.com/docs/6.x






