У меня есть следующий 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
стр.
Общие советы по уменьшению изображений докера:
php:7.2-alpine
и установите apache, используя apk.&& rm -rf /var/lib/apt/lists/*
Других решений пока нет …