본문 바로가기
Back-End Developer/[WEB] 각종 에러 해결 및 잡지식

Docker 환경에서 Laravel 프로젝트 권한 문제 해결하기: Artisan 명령 실행

by Max007 2024. 4. 4.
728x90

Docker를 사용하는 개발 환경에서 가끔 파일 시스템 권한 문제에 직면할 수 있습니다. 특히, Laravel 프레임워크를 사용하는 경우 artisan 명령을 실행할 때 Permission denied 오류에 부딪히는 것은 개발자에게 꽤나 골치 아픈 문제가 될 수 있습니다. 이 글에서는 Docker 컨테이너 내부에서 발생하는 Laravel 권한 문제를 해결하는 한 가지 효과적인 방법을 단계별로 설명합니다.

 

문제 상황

Docker 환경에서 Laravel Sail을 사용하여 artisan make:model Sample 명령을 실행하려고 할 때, 다음과 같은 오류 메시지가 나타났습니다.

ErrorException
file_put_contents(/var/www/html/app/Models/Sample.php): Failed to open stream: Permission denied

 

 

이 오류는 Docker 컨테이너 내부에서 파일 생성 또는 수정을 시도할 때 필요한 권한이 없음을 나타냅니다. 이러한 상황은 Docker 컨테이너와 호스트 시스템 간의 사용자 ID 불일치로 인해 발생할 수 있습니다.

해결 과정

해결책은 Docker 컨테이너 내부에 직접 접속하여 artisan 명령을 실행하는 것이었습니다. 이 방법은 호스트 시스템의 권한 문제를 우회하여 컨테이너 내에서 필요한 작업을 수행할 수 있게 해줍니다.

 

컨테이너 내 사용자 확인: 먼저, 현재 컨테이너에서 사용 중인 사용자의 ID를 확인해야 합니다. 이는 권한 문제의 원인을 파악하는 데 도움이 됩니다.실행 결과, 사용자가 root임을 확인했습니다. 이는 컨테이너 내에서 권한 문제가 발생하지 않아야 함을 의미합니다.

docker exec -it html-laravel.test-1 id

 

컨테이너 내부로 접속: 다음으로, Docker 컨테이너 내부의 쉘에 접속합니다.

docker exec -it html-laravel.test-1 bash

컨테이너 내부에서 Artisan 명령 실행: 컨테이너 내부에서 직접 artisan 명령을 실행합니다.

 

 
php artisan make:model Sample

 

결론

이 방법은 Docker 환경에서 Laravel 프로젝트를 관리할 때 권한 문제를 해결하는 데 매우 유용합니다. 특히, Docker 컨테이너와 호스트 시스템 간의 사용자 권한이 일치하지 않아 발생하는 문제에 대한 해결책을 제공합니다.

728x90