簡體   English   中英

優化 Laravel docker 鏡像

[英]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 安裝的所有應用程序及其依賴項。

有多種方法可以解決問題:

  • 使用多階段構建
  • 使用合適的基礎圖像
  • 使用阿爾派 linux

多階段構建

使用一個基礎映像來獲取/構建/測試您的應用程序並將所需的結果復制到下一階段。

FROM ubuntu:18.04 AS build
*do smth*
FROM php:7.4.27-fpm-alpine AS final
COPY from build...

合適的基礎圖片

使用已經包含運行應用程序所需的環境的圖像。 哪里不需要安裝所有這些垃圾。

使用阿爾派linux

使用基於 Alpine 或類似發行版的鏡像,這些鏡像針對 docker/clouds 進行了優化,並基於它們構建您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM