Рубрики
Uncategorized

Как использовать многоступенчатый докер сборки

Введение в многоступенчатый докер сборки и рабочий пример с использованием Symfony & Composer. Помечено с Docker, DevOps, контейнерами, изображениями.

Этот пост был впервые опубликован в Министерстве юстиции Digital & Technology Технический блог 26 июля 2019 года.

Докер революционизировал, как инженеры программного обеспечения создают приложения, небольшие ремонторуемые части программного обеспечения, которые могут быть легко масштабированы для удовлетворения спроса. Но с новыми технологиями сейчас есть больше вещей, которые необходимо учитывать. Одной из таких проблем, возникших с Docker, является размер изображения. Традиционно для получения эффективного докера изображения вы будете использовать несколько сложных команд Shell в DockerFile, чтобы сохранить слои как можно меньше.

В Докер 17.05 Многоступенчатые сборки были введены, и это означает, что теперь мы можем сделать документы Docker еще меньше, ниже я собираюсь пойти на примере того, как сделать это с помощью приложения Symfony и Composer.

С многоступенчатой сборкой вы можете использовать несколько От Команды в пределах одного Dockerfile Отказ Каждый От Команда может использовать другую базу и символизирует новый этап в сборке. Самое полезное, что вы можете избирательно копировать артефакты с одного этапа в другое, оставляя все, что вам не нужно позади.

Так что давайте создадим новый Dockerfile и добавить нашу первую От команда. Это будет использовать композитор в качестве базового изображения, чтобы мы могли получить все наши зависимости композиторов. Мы также можем назвать различные этапы в сборке, добавив Как <имя> к От команда.

FROM composer AS composer

Теперь давайте скопим наше Composer.json. , Composer.lock.lock . Мы также собираемся добавить Беги Команда, которая будет запустить композитор установить.

FROM composer AS composer

COPY composer.json /app
COPY composer.lock /app

RUN composer install

Таким образом, первая часть нашей многоэтапной сборки сделана, это позволит устанавливать наши зависимости композиторов на первое изображение, а затем скопировать их на окончательное изображение.

Далее нам нужно создать наш последний этап:

FROM php:7-fpm-alpine

WORKDIR /var/www

COPY ./ /app
COPY --from=composer /app/vendor /app/vendor

Используя Из PHP: 7-FPM-Alpine Мы начинаем новую сборку, используя PHP: 7-FPM-ALPINE Как базовое изображение, мы тогда используем Скопировать скопировать на поставщик папка в наше новое изображение. Мы оставляем все композитору Губбинс позади, и он не сохраняется в наше последнее изображение.

Полный Dockerfile :

FROM composer AS composer

COPY composer.json /app
COPY composer.lock /app

RUN composer install

FROM php:7-fpm-alpine

WORKDIR /var/www

COPY ./ /app
COPY --from=composer /app/vendor /app/vendor

Вам нужен только один докерф. Просто беги Docker Build и docker процесс сборки начнется.

Конечный результат использования многоступенчатых сборки — это тонкое изображение для производства без какой-либо сложности. Я надеюсь, что вы сможете увидеть преимущества использования многоступенчатых сборки, и я определенно побудил вас попробовать их.

Оригинал: «https://dev.to/tomtucka/how-to-use-multi-stage-docker-builds-1fde»