LoginSignup
7
7

More than 3 years have passed since last update.

Laradockで作ったLaravelプロジェクトで出るpermission deniedに関してかく

Posted at

こんにちは、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/を作りました。
- Laradockgit clone https://github.com/laradock/laradock.gitしたものです。
- /project-z/docker-laravel/project-zcomposer create-project --prefer-dist laravel/laravel docker-laravel -vvvしたものです。
directoryTree1.PNG
directoryTree2.PNG

permission deniedを順番に紹介

  • LaravelのDB設定のために/project-z/docker-laravel/.envを修正しようとするとpermission denied
    souceCodePermissionDotEnv.png

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

  • よくわからないけど/storage/logs/周りでpermission denied
    afterFixSecondDockerComposeUPPermission.PNG

  • よくわからないけど/storage/framework/views/周りでpermission denied
    viewPermission.PNG

permission deniedの原因と解決

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

    • 原因 : Laravelのソースコードの権限をDockerコンテナの中と外で適切に両方を対応してない(user idとgroup idが揃えてない) souceCodePermission.png centosAndLaradocUID.png
    • 解決 : Laradockの/laradock/.envにあるWORKSPACE_PUIDWORKSPACE_PGIDをDockerコンテナの外を基準として揃える。VSCodeなどで作業するなら、Dockerコンテナの外で作業することになるからです。 set1001.png
  • 最初はdocker compose up出来たのに、何ん回目でいきなりnginxのssl周りでpermission denied

    • 原因 : /laradock/php-fpm/DockerfileがDockerコンテナの中でnginxのuserのidとgroup idをdefaultとして1000に設定していた。(user idとgroup idが揃えてない) usermodWwwdata.png
    • 解決 : Laradockの/laradock/.envにあるPHP_FPM_PUIDPHP_FPM_PGID修正する set1001wwwdata.png
  • よくわからないけど/storage/logs/周りでpermission denied

  • よくわからないけど/storage/framework/views/周りでpermission denied

    • 原因 : Laravelのソースコードの権限をDockerコンテナの中と外で適切に両方を対応してない。
    • 解決 : Laradockの/laradock/.envにあるWORKSPACE_PUIDWORKSPACE_PGIDをDockerコンテナの外を基準として揃える。VSCodeなどで作業するなら、Dockerコンテナの外で作業することになるからです。
    • Laravelプロジェクト生成時点次第でsudo chown vagrant -R ...を1回する必要がある可能性があります。例えば、composer create-project --prefer-dist laravel/laravel docker-laravel -vvvした時点でdocker-laravelのファイルとディレクトリー権限がずれていることがあります。

まとめ

  • Dockerコンテナの中と外のuserのidとgroup idが揃えているか確認しましょう。
  • WORKSPACE_PUIDWORKSPACE_PGIDPHP_FPM_PUIDPHP_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

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7