[英]Optimizing Laravel docker image
更新后,我更新了 dockerfile,適用於任何想要為其 laravel 應用程序提供良好 dockerfile 的人。
我正在嘗試從我的 laravel 應用程序構建 Docker 圖像。 我的應用程序加上所有依賴項大約是 380 MB,但圖像變成了 840 MB。 我按照 Ivan 的建議使用了多階段構建(圖像大小減半,起初是 1.2 GB)。 但我仍然想知道為什么我的 Docker 圖像這么大? 以及如何減小圖像的大小?
這是我的 Dockerfile:
# Instruction adapted from https://laravel-news.com/multi-stage-docker-builds-for-laravel
# PHP Dependencies
FROM composer:latest as vendor
COPY database/ database/
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install \
--no-dev \
--ignore-platform-reqs \
--no-interaction \
--no-plugins \
--no-scripts \
--prefer-dist
# Frontend
FROM node:16.13.1 as frontend
RUN mkdir -p /app/public
COPY package.json webpack.mix.js tailwind.config.js /app/
COPY resources/ /app/resources/
COPY public/ /app/public/
COPY package-lock.json /app/package-lock.json
WORKDIR /app
RUN npm ci && npm run production
# Application
FROM php:7.4-apache
COPY . /var/www/html
COPY --from=vendor /app/vendor/ /var/www/html/vendor/
COPY --from=frontend /app/public/ /var/www/html/public/
您的映像很大,因為它包含您通過 apt-get 安裝的所有應用程序及其依賴項。
有多種方法可以解決問題:
使用一個基礎映像來獲取/構建/測試您的應用程序並將所需的結果復制到下一階段。
FROM ubuntu:18.04 AS build
*do smth*
FROM php:7.4.27-fpm-alpine AS final
COPY from build...
使用已經包含運行應用程序所需的環境的圖像。 哪里不需要安裝所有這些垃圾。
使用基於 Alpine 或類似發行版的鏡像,這些鏡像針對 docker/clouds 進行了優化,並基於它們構建您的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.