Как я могу сделать этот образ докера меньше? - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть следующий 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 <a href="https://zeit.co/now" rel="nofollow noreferrer"> Now . Согласно тому, что я читаю в документации докера, многоэтапные сборки иногда помогают уменьшить размер изображения. Моя текущая идея состоит в том, чтобы разбить 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.

EDIT:

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

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.

1 Ответ

0 голосов
/ 10 ноября 2018

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

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