3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
Creating Laravel Image with Docker Multi-Stage Builds Docker: 18.09 Laravel: 6.9 在製作 Container Images 時,基本上 Images 的大小是越小越好,而瘦身的面向很多,在 Dockerfile 中使用 Multi-Stage Builds 也是方法之一。 Docker 在 17.05 以後提供了一個 Multi-Stage Builds(多階段構建)功能,這個功能可以將整個產線的 Images 整合進同一個 Dockerfile ,讓其變為 Intermediate Image(中繼映象檔),而後續的映象檔也可以取得中繼映象檔產生的 artifacts(檔案),這樣一來便可以有效地控管流程及降低不必要的安裝。 Usage 以 Laravel 為例,要完整的部署 Laravel,必須先經過 composer 及 npm or yarn 安裝一些套件,但這些套件只負責安裝或編譯,在網站部署以後是不需要的。 最原始的作法,就是將從安裝到部署需要用到的東西都裝進去 Image。 範例 # Base image FROM php:7.4.1-apache # Install npm RUN apt-get update && apt-get install -y npm # Install composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # Copy Laravel app to Container COPY . . # Composer Install RUN composer install \ --ignore-platform-reqs \ --no-interaction \ --no-plugins \ --no-scripts \ --prefer-dist # Npm install and Compile RUN npm install \ && npm run production 其實我們真正需要的只是特定的產物,因此可以使用 Multi-Stage Builds ,讓套件先在 Intermediate Image 安裝完成,最後再使用其產生的檔案就好了。 範例 # 使用 composer image 建立 vendor stage FROM composer:1.9 as vendor COPY database/ database/ COPY composer.json composer.json COPY composer.lock composer.lock RUN composer install \ --ignore-platform-reqs \ --no-interaction \ --no-plugins \ --no-scripts \ --prefer-dist # 使用 node image 建立 nodejs stage FROM node:10.18 as nodejs RUN mkdir -p /app/public COPY package.json webpack.mix.js /app/ COPY resources/sass/ /app/resources/sass/ COPY resources/js/ /app/resources/js/ WORKDIR ./app RUN npm install && npm run production # Base image FROM php:7.4.1-apache COPY . /var/www/html # 拿出 vendor stage 安裝的檔案 COPY --from=vendor /app/vendor/ /var/www/html/vendor/ # 拿出 nodejs stage 安裝及編譯完成的檔案 COPY --from=nodejs /app/public/js/ /var/www/html/public/js/ COPY --from=nodejs /app/public/css/ /var/www/html/public/css/ COPY --from=nodejs /app/mix-manifest.json /var/www/html/mix-manifest.json Categories: DockerLaravel Tags: DockerLaravelPHP 分類 Android AngularJS API Blueprint Chrome Database MySQL DataStructure Docker Editor Vim Firefox Git GitLab Google API Hadoop Language Go Java JavaScript jQuery jQueryChart Node.js Vue PHP Laravel ZendFramework Python Mac Network Cisco DLink Juniper Oauth Server Apache Share Unix FreeBSD Linux WebDesign Bootstrap CSS HTML Wordpress Search 搜尋關鍵字:

本文由blogjohnsonluorg提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦