こんにちは、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