Laravel Dockerfile> 1 ГБ
Я строю Docker
Изображение для моего Laravel
приложение, но оно становится больше, чем 1GB
. ЭтоDockerfile
:
#
# PHP Dependencies
#
FROM composer 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
#
# Application
#
FROM php:fpm-alpine
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
curl \
libtool \
libxml2-dev \
&& apk add --no-cache \
curl \
git \
mysql-client \
&& pecl install redis \
&& docker-php-ext-install \
pdo \
pdo_mysql \
tokenizer \
bcmath \
opcache \
xml \
&& apk del -f .build-deps \
&& docker-php-ext-enable \
pdo_mysql \
redis
WORKDIR /var/www/html
COPY . /var/www/html
COPY --from=vendor /app/vendor/ /var/www/html/vendor/
COPY .env.staging /var/www/html/.env
RUN chown -R root:www-data .
EXPOSE 9000
CMD ["php-fpm"]
я использую Vue
как интерфейс и Redis
как кэширующий провайдер.
Я привык к изображениям размером около 200-300 МБ, но это смешно.
Что я могу сделать, чтобы уменьшить размер изображения?
Заранее спасибо.
1 ответ
Поскольку docker
файловая система OverlayFS
, вам понадобится специальный инструмент, чтобы погрузиться в слои FS.
Есть много инструментов для исследования изображений. Для вашего случая я бы предложил wagoodman/dive
: Инструмент для изучения каждого слоя в образе докера.
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive:latest \
<image_name|image_id>
Инструмент для изучения образа Docker, содержимого слоев и поиска способов уменьшения размера образа Docker. https://github.com/wagoodman/dive/blob/master/.data/demo.gif
Как видно на скриншоте - Layers
таблица имеет Size
столбец.
Итак, вы можете узнать - какой слой вашего docker
image имеет наибольший вклад в объем конечного изображения.