로컬 개발을 위해 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
는 버그 및 경고 가방과 함께 제공되었습니다.수정 후 작동하는 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를 사용할 수 있습니다. 여기에서 각 컨테이너에 대해 별도의 터미널을 열 수 있습니다. 이것이 도움이 되기를 바랍니다!
최고
Reference
이 문제에 관하여(로컬 개발을 위해 LEMP 스택에서 Laravel 8을 실행하도록 Docker Compose 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tomtomdu73/setup-docker-compose-to-run-laravel-8-on-lemp-stack-for-local-development-3gh4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)