Laravel을 위한 다단계 Docker 빌드

4137 단어
대부분의 애플리케이션에는 모든 종속성을 다운로드하거나 프론트엔드 자산을 컴파일하는 빌드 단계가 있습니다.

일반적으로 대부분의 배포 시간이 걸립니다.

종속성을 다운로드하고 프런트엔드 자산을 컴파일하는 데 사용된 불필요한 종속성으로 인해 최종 이미지가 더 커질 수 있다는 점은 말할 것도 없습니다.

Docker 다단계 빌드



배포를 더 빠르게 하고 이미지를 더 얇게 만드는 가장 쉬운 방법 중 하나는 다단계 도커 빌드를 사용하는 것입니다.

Docker는 특정 단계를 캐시하고 종속 파일이 변경된 경우에만 다시 실행합니다.

작곡가 단계


  • Composer 2.0 이미지를 사용합니다.
  • "작곡가 설치"에 필요한 파일을 복사하십시오.
  • "작곡기 설치"를 실행합니다.
  • 나머지 파일을 복사합니다.
  • "작곡기 덤프 자동 로드"를 실행합니다.

  • #
    # PHP Dependencies
    #
    FROM composer:2.0 as vendor
    
    WORKDIR /app
    
    COPY database/ database/
    COPY composer.json composer.json
    COPY composer.lock composer.lock
    
    RUN composer install \
        --no-interaction \
        --no-plugins \
        --no-scripts \
        --no-dev \
        --prefer-dist
    
    COPY . .
    RUN composer dump-autoload
    

    NPM 단계


  • NodeJS 이미지를 사용하십시오.
  • "npm 설치"에 필요한 경찰 파일.
  • "npm install"을 실행합니다.
  • 프런트엔드 자산을 빌드하는 데 필요한 파일을 복사합니다.
  • 프론트엔드 자산을 구축하십시오.

  • #
    # Frontend
    #
    FROM node:14.9 as frontend
    
    WORKDIR /app
    
    COPY artisan package.json webpack.mix.js yarn.lock tailwind.js ./
    
    RUN npm install
    
    COPY resources/js ./resources/js
    COPY resources/sass ./resources/sass
    
    RUN npm run production
    

    신청 단계


  • 원하는 이미지를 사용하세요.
  • 이전 단계에서 빌드된 파일을 복사합니다.
  • 빠른 배포를 즐기십시오.

  • #
    # Application
    #
    FROM php:7.4-fpm
    
    WORKDIR /app
    
    # Install PHP dependencies
    RUN apt-get update -y && apt-get install -y libxml2-dev
    RUN docker-php-ext-install pdo pdo_mysql mbstring opcache tokenizer xml ctype json bcmath pcntl
    
    # Copy Frontend build
    COPY --from=frontend /app/node_modules/ ./node_modules/
    COPY --from=frontend /app/public/js/ ./public/js/
    COPY --from=frontend /app/public/css/ ./public/css/
    COPY --from=frontend /app/public/mix-manifest.json ./public/mix-manifest.json
    
    # Copy Composer dependencies
    COPY --from=vendor /app/vendor/ ./vendor/
    COPY . .
    
    RUN php artisan config:cache
    RUN php artisan route:cache
    

    이 기사here.에서 사용된 전체Dockerfile를 찾을 수 있습니다.

    즐기다!

    좋은 웹페이지 즐겨찾기