Как я могу сделать этот образ докера меньше?

У меня есть следующий dockerfile:

FROM php:7.2-apache
LABEL name "medico-app"COPY composer.json composer.lock ./
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y --no-install-recommends git zip && composer install
COPY . /var/www/html
EXPOSE 80

Когда это изображение построено, оно имеет размер ~ 500 Мбит / с. Я пытаюсь сжать это изображение, чтобы < 100 Мб, чтобы я мог использовать его на Zeit Сейчас. Согласно тому, что я читаю в документации докера, многоэтапные сборки иногда помогают уменьшить размер изображения. Моя текущая идея состоит в том, чтобы разбить dockerfile на два этапа, один из которых я бы установил с помощью compose а другой, где я бы просто php а также apache, Хотя я не могу понять это правильно. Какие-либо предложения?

Это то, что я до сих пор:

# first stage
FROM composer:latest
COPY composer.json composer.lock ./
RUN composer install

Для второго этапа я попробовал это

FROM httpd:2.4-alpine
LABEL name "medico-app"COPY --from=0 /app/vendor ./vendor
COPY . /usr/local/apache2/htdocs/
EXPOSE 80

Однако, когда я сейчас запускаю контейнер, файлы php не обслуживаются, я просто вижу их как текст. Я, наверное, что-то здесь не хватает с PHP / Apache.

РЕДАКТИРОВАТЬ:

Я также попробовал это для второго этапа, но я не могу заставить его работать:

FROM php:7.2-alpine
LABEL name "medico-app"RUN apk --no-cache update && apk --no-cache add apache2 openrc
COPY --from=0 /app/vendor ./vendor
COPY . /var/www/
EXPOSE 80

Теперь, когда я открываю свой локальный хост, я не вижу файлы PHP, которые я должен видеть. Я просто вижу дефолт it works стр.

-3

Решение

Общие советы по уменьшению изображений докера:

  1. Используйте минимальное базовое изображение, такое как альпийские версии. В этом случае вы можете использовать что-то вроде php:7.2-alpine и установите apache, используя apk.
  2. При использовании apt-get следуйте лучшие практики. В частности добавить && rm -rf /var/lib/apt/lists/*
  3. Попробуйте минимизировать код, добавляемый к изображению, используя что-то вроде глотать.
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector