로컬 개발을 위해 LEMP 스택에서 Laravel 8을 실행하도록 Docker Compose 설정

프롤로그



최근에 Docker compose를 사용하여 LEMP 스택(Linux, Nginx, MySQL, PHP) 위에 Laravel 앱을 설정하는 방법에 대해 great tutorial written by Digital Ocean 살펴보았습니다.

전제 조건에서 제안한 대로 Ubuntu 18.04가 설치된 서버를 사용하지 않고 대신 Windows 10 Pro를 실행하는 로컬 컴퓨터를 사용했습니다. 즉, 튜토리얼 단어를 따라 몇 가지 버그에 직면 했으므로 아래에서 언급하고 솔루션을 제공하고 싶습니다.

0단계: Windows Pro 또는 Enterprise 사용



이전에 Windows Home에서 Docker를 실행하려고 시도했지만 항상 무언가가 실패하고 해결 방법을 지속적으로 찾아야 하기 때문에 너무 고통스럽습니다. Windows 버전을 업그레이드하여 번거로움을 없애고 설치Docker Desktop만 하면 Docker 및 Kubernetes 기능을 즐길 수 있습니다.

첫 번째 버그: 잘못된 Dockerfile



마지막으로 docker-composer.yml 파일에 의해 정의된 전체 환경을 시작해야 하는 8단계까지는 튜토리얼에서 모든 것이 매우 간단합니다.

실제로docker-compose up -d는 버그 및 경고 가방과 함께 제공되었습니다.
  • composer.lock 파일 누락
  • libzip-dev 종속성이 누락됨
  • 불필요한 mbstring 종속성
  • 잘못된 PHP 버전, Laravel 8의 경우 php >= 7.3이 필요합니다.

  • 수정 후 작동하는 Dockerfile은 다음과 같습니다.

    FROM php:7.3-fpm
    
    # Copy composer.lock and composer.json
    COPY composer.json /var/www/
    
    # Set working directory
    WORKDIR /var/www
    
    # Install dependencies
    RUN apt-get update && apt-get install -y \
        build-essential \
        libpng-dev \
        libjpeg62-turbo-dev \
        libfreetype6-dev \
        locales \
        zip \
        jpegoptim optipng pngquant gifsicle \
        vim \
        unzip \
        git \
        curl \
        libzip-dev
    
    # Clear cache
    RUN apt-get clean && rm -rf /var/lib/apt/lists/*
    
    # Install extensions
    RUN docker-php-ext-install pdo_mysql zip exif pcntl
    RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
    RUN docker-php-ext-install gd
    
    # Install composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    
    # Add user for laravel application
    RUN groupadd -g 1000 www
    RUN useradd -u 1000 -ms /bin/bash -g www www
    
    # Copy existing application directory contents
    COPY . /var/www
    
    # Copy existing application directory permissions
    COPY --chown=www:www . /var/www
    
    # Change current user to www
    USER www
    
    # Expose port 9000 and start php-fpm server
    EXPOSE 9000
    CMD ["php-fpm"]
    


    두 번째 버그: "Artisan 명령을 찾을 수 없음" 및 -T 옵션



    튜토리얼에서는 앱 컨테이너 내에서 composer install 명령을 실행하여 Laravel 종속성을 설치하고 공급업체 폴더를 생성해야 한다는 점을 잊어버렸습니다. 컨테이너 내에서 명령을 실행하려면 다음을 사용하십시오.
    docker-compose exec -T composer install

    You will see an error saying "the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'" if you don't use the option -T after exec



    그런 다음 성공적으로 실행할 수 있습니다.docker-compose exec app php artisan key:generate
    이제부터 Laravel 앱이 http://localhost에 표시되어야 하며 앱 컨테이너 내에서 모든php artisan ...을 원활하게 실행할 수 있습니다.

    몇 가지 팁


  • docker-compose exec ... 를 사용하여 컨테이너 내부에서 명령을 실행하는 대신 Docker Desktop GUI를 사용할 수 있습니다. 여기에서 각 컨테이너에 대해 별도의 터미널을 열 수 있습니다.
  • Install MySQL Workbench 데이터베이스를 보다 쉽게 ​​시각화하기 위해

  • 이것이 도움이 되기를 바랍니다!
    최고

    좋은 웹페이지 즐겨찾기