언어 및 프레임워크 가이드
Laravel 컨테이너 앱 실행 가이드
31 분
back4app containers는 laravel 애플리케이션을 호스팅하기 위한 강력한 플랫폼입니다 docker화된 laravel 앱을 자동으로 배포할 수 있는 기능을 통해, 쉽게 확장 가능하고 유연한 환경에서 프로젝트를 시작할 수 있습니다 이 가이드에서는 back4app containers에서 laravel 애플리케이션을 준비하고 배포하는 과정을 안내합니다 간단한 프로젝트부터 더 복잡한 설정까지 모든 것을 다룰 것입니다 필요한 준비 작업부터 시작하여, 애플리케이션을 도커화하고, 로컬에서 테스트하고, github에 프로젝트를 푸시하고, back4app containers에서 프로젝트를 설정하고, 배포를 모니터링하며, 일반적인 문제를 해결하는 방법을 설명합니다 질문이나 의견이 있으시면, slack의 back4app 커뮤니티의 #containers 채널에서 대화에 참여해 주세요 언제든지 community\@back4app com으로 연락하실 수 있습니다 언제든지 back4app 컨테이너에서 샘플로 작동하는 laravel 프로젝트를 확인하고 싶다면, 다음 링크로 가세요 https //github com/templates back4app/containers laravel sample 1 당신의 laravel 애플리케이션 준비하기 a 프로젝트 구조 당신의 laravel 애플리케이션이 모든 필요한 파일과 폴더가 포함된 적절한 디렉토리 구조를 따르는지 확인하세요 예를 들어 app , routes , resources , 그리고 public ,이 적절하게 정리되어 있어야 합니다 b 의존성 필요한 모든 의존성이 composer json 파일에 올바른 버전과 함께 나열되어 있는지 확인하십시오 모든 의존성을 설치했는지 확인하려면 composer install 을 사용하여 composer lock 파일을 생성하십시오 c 환경 변수 애플리케이션이 환경 변수에 의존하는 경우, 필요한 변수가 정의된 env 파일이 있는지 확인하십시오 back4app containers에 배포할 때, 배포 설정에서 이러한 환경 변수를 구성해야 합니다 d 서버 설정 (해당되는 경우) laravel 애플리케이션에 사용자 정의 서버(예 apache 또는 nginx)가 포함된 경우, laravel 애플리케이션을 제공하도록 올바르게 설정되고 구성되었는지 확인하십시오 서버가 예상대로 작동하는지 확인하기 위해 로컬에서 테스트하십시오 e 애플리케이션 최적화 성능 최적화 모범 사례를 구현하여 laravel 애플리케이션을 최적화하세요 lighthouse와 같은 도구를 사용하여 애플리케이션을 감사하고 성능 또는 접근성 문제를 해결하세요 f 크로스 브라우저 호환성 여러 브라우저와 장치에서 애플리케이션을 테스트하여 올바른 렌더링 및 기능을 보장하세요 laravel 애플리케이션을 철저히 검토하고 준비한 후, 프로젝트를 위한 dockerfile을 생성하는 다음 단계로 진행할 수 있습니다 2 도커화 laravel 애플리케이션을 도커화하는 것은 프로젝트의 루트 디렉토리에 dockerfile을 생성하는 것을 포함합니다 dockerfile은 애플리케이션의 docker 이미지를 빌드하기 위한 지침을 포함하며, 이후 back4app containers에 배포할 수 있습니다 일반적인 laravel 애플리케이션을 위한 dockerfile을 만드는 방법에 대한 자세한 설명은 다음과 같습니다 1 laravel 애플리케이션의 루트 디렉토리에 dockerfile이라는 이름의 새 파일을 생성합니다(파일 확장자는 없습니다) 2 기본 이미지 정의 from 명령을 사용하여 기본 이미지를 지정하여 dockerfile을 시작합니다 일반적인 laravel 애플리케이션의 경우 기본 이미지는 php 이미지여야 합니다, 예를 들어 php 8 1 apache from php 8 1 apache 3 작업 디렉토리 설정 workdir 명령을 사용하여 docker 컨테이너 내에서 애플리케이션의 작업 디렉토리를 설정합니다 이곳에 애플리케이션 파일이 저장되고 실행됩니다 workdir /var/www/html 4 프로젝트 파일 복사 copy 명령어를 사용하여 laravel 애플리케이션 디렉토리의 모든 파일을 docker 컨테이너로 복사합니다 copy 5 종속성 설치 run 명령어를 사용하여 composer install 을 사용하여 laravel 애플리케이션에 필요한 종속성을 설치합니다 run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist 6 apache 서버 설정 apache의 재작성 모듈을 활성화하고, 000 default conf 파일을 구성하여 laravel에 적합한 apache 설정을 포함시키고, apache 환경 변수를 설정합니다 run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public 7 laravel 앱 키 생성 laravel은 사용자 세션 및 기타 민감한 데이터를 암호화하기 위해 앱 키가 필요합니다 run 명령어를 사용하여 앱 키를 생성합니다 run php artisan key\ generate 8 laravel 애플리케이션 빌드 run 명령어를 추가하여 빌드 스크립트를 사용하여 laravel 애플리케이션을 빌드합니다 일반적으로 composer dump autoload , php artisan config\ cache , php artisan route\ cache 및 php artisan view\ cache 을 사용합니다 run composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache 9 서버 포트 노출 expose 명령어를 사용하여 docker 컨테이너 내에서 서버가 실행될 포트를 지정합니다 예를 들어, 포트 80을 사용할 수 있습니다 expose 80 10 서버 시작 cmd 명령을 사용하여 빌드된 laravel 애플리케이션을 제공하는 서버를 시작하는 명령을 지정합니다 cmd \["apache2 foreground"] 일반 laravel 애플리케이션을 위한 완전한 dockerfile은 다음과 같아야 합니다 \#dockerfile example on running php laravel app using apache web server from php 8 1 apache \# install necessary libraries run apt get update && apt get install y \\ libonig dev \\ libzip dev \# install php extensions run docker php ext install \\ mbstring \\ zip \# copy laravel application copy /var/www/html \# set working directory workdir /var/www/html \# install composer copy from=composer\ latest /usr/bin/composer /usr/bin/composer \# install dependencies run composer install \# change ownership of our applications run chown r www data\ www data /var/www/html run docker php ext install mbstring copy env example env run php artisan key\ generate \# expose port 80 expose 80 \# adjusting apache configurations run a2enmod rewrite copy apache config conf /etc/apache2/sites available/000 default conffrom php 8 1 apache workdir /var/www/html copy run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public run php artisan key\ generate \\ && composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache expose 80 cmd \["apache2 foreground"] 3 프로젝트를 로컬에서 테스트하기 back4app containers에 laravel 애플리케이션을 배포하기 전에, docker를 사용하여 로컬에서 테스트하는 것이 중요합니다 이는 애플리케이션이 예상대로 실행되는지 확인하고 배포 전에 문제를 식별하고 수정하는 데 도움이 됩니다 laravel 애플리케이션을 위한 docker 이미지 빌드하기 터미널에서 프로젝트의 루트 디렉토리로 이동한 후 다음 명령을 실행하고 your app name 을(를) 애플리케이션의 이름으로 바꾸세요 로컬에서 docker 컨테이너 실행하기 다음으로, docker 컨테이너를 로컬에서 시작하기 위해 다음 명령을 실행하세요 이 명령은 컨테이너의 노출된 포트(예 80)를 로컬 머신의 포트(예 8000)와 매핑합니다 애플리케이션 테스트하기 웹 브라우저를 열고 http //localhost 8080 http //localhost 8000/ 로 이동하여 laravel 애플리케이션을 확인하세요 모든 것이 예상대로 작동하는지 확인하십시오 문제가 발생하면 다음 단계로 넘어가기 전에 해결하십시오 4 프로젝트를 github에 푸시하기 불필요하거나 민감한 파일을 리포지토리에서 제외하기 위해 프로젝트의 루트 디렉토리에 gitignore 파일을 생성하세요 (예 vendor , env , node modules , 등) git 리포지토리를 초기화하고, 프로젝트 파일을 커밋한 후 원격 리포지토리(예 github)에 푸시하세요 5 back4app 컨테이너에 애플리케이션 배포하기 back4app 계정을 만든 후, docs에 나열된 단계를 따르세요 1 github 리포지토리를 back4app과 연결하기 https //www back4app com/docs containers/integrate with github 2 배포를 위한 프로젝트 준비하기 https //www back4app com/docs containers/prepare your deployment 요약하자면, 컨테이너는 dockerfile에 자세히 설명된 지침을 따르며 애플리케이션을 생성하기 시작합니다 6 배포 모니터링 및 가능한 오류 해결하기 back4app 컨테이너 대시보드에서 배포 로그와 상태를 주의 깊게 살펴보세요 배포 중 발생하는 오류나 문제를 해결하세요 더 복잡한 프로젝트의 경우, 모든 필요한 서비스(예 데이터베이스 또는 외부 api)가 올바르게 구성되고 접근 가능하도록 하세요 7 일반적인 문제 해결하기 back4app 컨테이너에서 laravel 애플리케이션을 실행할 때 발생하는 일반적인 배포 오류는 여기 https //www back4app com/docs containers/troubleshooting laravel 애플리케이션을 배포할 때 발생할 수 있는 다른 일반적인 오류는 다음과 같습니다 잘못된 포트 구성 laravel 애플리케이션은 back4app containers에 배포될 때 지정된 포트에서 실행되도록 구성되어야 합니다 애플리케이션에 여전히 접근할 수 없는 경우, dockerfile을 확인하여 올바른 포트가 노출되었는지 확인하십시오 (예 포트 80의 경우 expose 80) 호환되지 않거나 누락된 종속성 필요한 모든 종속성이 composer json 파일에 나열되어 있고, 그 버전이 서로 및 애플리케이션 코드와 호환되는지 확인하십시오 누락되거나 호환되지 않는 종속성은 런타임 오류를 초래할 수 있습니다 잘못된 환경 변수 또는 구성 애플리케이션이 특정 환경 변수 또는 구성 파일에 의존하는지 확인하고, back4app containers 환경에서 올바르게 설정되어 있는지 확인하십시오 필요한 환경 변수를 dockerfile에서 env 명령을 사용하여 설정하십시오 서버의 완전한 도메인 이름을 신뢰할 수 없다는 오류 문제 이 오류는 apache가 서버의 완전한 도메인 이름(fqdn)을 결정할 수 없을 때 발생합니다 해결책 이 오류를 억제하려면 apache 구성에서 servername 지시어를 전역적으로 설정할 수 있습니다 apache 구성 파일( apache config conf )을 다음과 같이 수정하십시오 apache config conf servername localhost \<virtualhost 80> documentroot /var/www/html/public \<directory /var/www/html/public> allowoverride all order allow,deny allow from all \</directory> \# log access messages to access log file errorlog /var/log/apache2/access log customlog /var/log/apache2/access log combined \# log error messages to error log file loglevel error errorlog /var/log/apache2/error log \</virtualhost> 500 내부 서버 오류 문제 이 오류는 서버 구성 또는 애플리케이션 자체에 문제가 있음을 나타냅니다 해결책 더 구체적인 오류 메시지를 확인하기 위해 apache 오류 로그를 확인하세요 ( /var/log/apache2/error log ) 이는 오류의 근본 원인을 파악하는 데 도움이 될 수 있습니다 apache 구성 파일 ( apache config conf )이 laravel 애플리케이션에 적절한 documentroot 및 directory 지시어로 올바르게 설정되어 있는지 확인하세요 필요한 php 확장이 dockerfile에 설치되고 활성화되어 있는지 확인하세요 필요한 확장을 설치하려면 docker php ext install 명령을 사용하고, apache 모듈을 활성화하려면 run a2enmod 명령을 사용하세요 laravel 애플리케이션 파일의 파일 권한 및 소유권을 확인하세요 chown 명령을 사용하여 파일이 적절한 사용자 ( www data 가 대부분의 경우) 소유인지 확인하세요 apache 구성 문제 문제 잘못되거나 잘못 구성된 apache 설정은 오류나 예기치 않은 동작을 초래할 수 있습니다 해결책 apache 구성 파일 ( apache config conf )을 다시 확인하여 laravel 애플리케이션의 documentroot 디렉토리를 올바르게 가리키고 적절한 directory 지시어가 있는지 확인하세요 dockerfile에서 rewrite 모듈을 활성화하려면 run a2enmod rewrite 명령을 실행하세요 이는 laravel의 라우팅이 제대로 작동하는 데 필요합니다 누락되거나 잘못된 종속성 문제 laravel 애플리케이션에 누락되거나 잘못된 종속성이 있으면 오류나 예기치 않은 동작이 발생할 수 있습니다 해결책 필요한 모든 종속성이 나열되어 있는지 확인하려면 composer json 파일을 확인하고, 올바른 버전이 포함되어 있는지 확인하세요 종속성을 설치하고 composer lock 파일을 생성하려면 composer install 을 실행하세요 dockerfile에서 docker php ext install 명령어를 사용하여 필요한 php 확장이 설치되고 활성화되어 있는지 확인하세요 파일 권한 문제 문제 잘못된 파일 권한은 laravel의 파일 저장소 또는 캐시와 관련된 문제를 일으킬 수 있습니다 해결책 dockerfile에서 chown 명령어를 사용하여 laravel 애플리케이션 파일의 소유권을 적절한 사용자( www data 인 경우가 많습니다)로 변경하세요 저장소 및 캐시 디렉토리에 올바른 권한이 있는지 확인하세요 dockerfile에서 적절한 권한을 설정하기 위해 chmod 명령어를 실행할 수 있습니다 애플리케이션 충돌 또는 처리되지 않은 예외 laravel 애플리케이션 코드에서 처리되지 않은 예외나 충돌은 배포 실패 또는 예기치 않은 동작을 초래할 수 있습니다 애플리케이션 로그에서 오류 메시지를 확인하고 코드의 문제를 해결하세요 docker logs your app name 을 실행하여 오류나 예외가 발생하는지 확인하세요 sentry와 같은 도구를 사용하여 애플리케이션의 오류를 추적하고 모니터링하세요 서버 구성 laravel 애플리케이션에 사용자 정의 서버 구성(예 apache 또는 nginx)이 포함되어 있는 경우, dockerfile에서 올바르게 구성되었는지 확인하고 필요한 모듈이나 구성이 설치되어 있는지 확인하십시오 잘못된 파일 권한 잘못된 파일 권한은 back4app containers에서 laravel 애플리케이션을 배포할 때 런타임 오류를 유발할 수 있습니다 laravel 문서에 명시된 대로 필요한 디렉토리와 파일에 올바른 권한이 부여되었는지 확인하십시오 메모리 제한 back4app containers에 배포할 때 애플리케이션의 메모리가 부족한 경우, php ini 설정을 사용하여 dockerfile에서 메모리 한도를 늘리는 것을 고려하십시오 네트워킹 문제 laravel 애플리케이션이 외부 서비스나 api에 의존하는 경우, back4app containers 환경 내에서 올바르게 구성되고 접근 가능한지 확인하십시오 docker 네트워크 명령을 사용하여 네트워킹 문제를 해결하십시오 8 애플리케이션 확장 추가 리소스나 수평/수직 확장이 필요한 더 복잡한 프로젝트의 경우, 증가된 트래픽과 부하를 처리하기 위해 back4app containers 요금제를 업그레이드하는 것을 고려하십시오 9 샘플 애플리케이션 샘플 laravel 애플리케이션 프로젝트는 다음으로 이동할 수 있습니다 https //github com/templates back4app/containers python flask sample