Laradock에서 만든 Laravel 프로젝트에서 나오는 permission denied에 관해서

안녕하세요, Fusic의 mockmock 팀 엔지니어 지호입니다.

이 기사는


  • Fusic Advent Calendar24일째의 기사입니다.
  • Linux에서 Laradock을 사용한 Laravel 프로젝트 구축에서 만난 permission denied에 대해 씁니다.

  • 쓰는 이유는



    Laradock docker-compose.yml 를 봐 でかい。どこ見ればいいのがわからない 때때로 도움이 되었으면 좋겠기 때문입니다.

    환경



    리눅스


  • CentOS Linux release 7.7.1908 (Core)

  • Docker Compose


  • docker-compose version 1.25.0, build b42d419

  • 도커


  • 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-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
  • 잘 모르겠지만 /storage/logs/ 주위에 permission denied
  • 잘 모르겠지만 /storage/framework/views/ 주위에 permission denied

  • permission denied의 원인과 해결



  • Laravel DB 설정을 위해 /project-z/docker-laravel/.env를 수정하려고하면 permission denied
  • 원인 : Laravel 소스 코드의 권한이 Docker 컨테이너 내부와 외부에서 적절히 둘 다 대응하지 않습니다 (user id와 group id가 정렬되지 않음).


  • 해결: Laradock의 /laradock/.env 에 있는 WORKSPACE_PUIDWORKSPACE_PGID 를 Docker 컨테이너 밖을 기준으로 정렬한다. VSCode 등으로 작업한다면 Docker 컨테이너 외부에서 작업하게 되기 때문입니다.



  • 처음에는 docker compose up 할 수 있었는데, 무슨 회째로 갑자기 nginx의 ssl 주위에서 permission denied
  • 원인 : /laradock/php-fpm/Dockerfile 가 Docker 컨테이너 안에서 nginx의 user의 id와 group id를 default로서 1000으로 설정하고 있었다. (사용자 ID와 그룹 ID가 정렬되지 않음)

  • 해결 : Laradock /laradock/.env 에 있는 PHP_FPM_PUIDPHP_FPM_PGID 수정하기


  • 잘 모르겠지만 /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 ... 를 한 번 해야 할 수도 있습니다. 예를 들어, composer create-project --prefer-dist laravel/laravel docker-laravel -vvv 한 번에 docker-laravel 의 파일과 디렉토리 권한이 잘못되었을 수 있습니다.


  • 요약


  • Docker 컨테이너 안과 외부의 user id와 group id가 갖추어져 있는지 확인합시다.
  • WORKSPACE_PUIDWORKSPACE_PGID , PHP_FPM_PUIDPHP_FPM_PGID 를 제대로 설정하면 대체로 괜찮습니다.
  • /laradock/.env (Laradock env 파일)


  • 참고



    htps : // / 라도 ck. 이오
    htps : // / cs. 도 c r. 코 m / 코 m 포세 / 코 m 포세 후 / / 엔 v_ 후 우
    htps : // ぁらゔぇl. 이 m/도 cs/6. x

    좋은 웹페이지 즐겨찾기