Рубрики
Uncategorized

Научу вас, как создать нужный вам образ PHP-докера

Автор оригинала: David Wong.

В предыдущей статье говорилось о том, как создать среду разработки Laravel с помощью Docker. Фактически, он может запускать любой PHP-проект на локальном компьютере с помощью Docker, так что любой PHP-проект может выполняться в среде Docker. В основном это файл Docker, который должен сделать PHP зеркальным в соответствии с зависимостью от проекта PHP. В этой статье в основном рассказывается о том, как создать файл изображения Docker на PHP в соответствии с требованиями.

1. Наследование базового зеркала

Сначала вам нужно найти базовый образ в соответствии с требованиями вашего PHP-проекта, а затем установить расширение PHP по запросу на основе базового образа. Использовать в файле Dockerfile ИЗ Команда задает базовое изображение.

From 
  • В Укажите базовое исходное изображение для создания зеркала, и если локальное изображение не указано, оно будет автоматически отражено из общедоступной библиотеки Docker.
  • FROM Должна быть первой инструкцией неаннотированной строки в файле Dockerfile, то есть начинается инструкция Dockerfile from FROM .

Здесь мы намерены создать настраиваемый образ PHP 7.2, включающий FPM, поэтому сначала укажите базовый образ в файле Dockerfile:

FROM php:7.2-fpm

2. Установите расширения PHP

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

2.1 Установите официальное расширение PHP в docker hub

Официальные расширения PHP предоставляются в Docker Hub, доступ к которым можно получить через docker-php-ext-install Команда сценария перечисляет расширения, которые будут установлены в файле Docker. Вот что мы обычно используем при установке образа PHP pdopdo_mysqlmcrypt Эти расширения.

FROM php:7.2-fpm
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath

Если вам нужно указать некоторые пользовательские параметры компиляции для расширения, docker предоставляет другой полезный скрипт docker-php-ext-configure Для передачи параметров компиляции (которые обычно не требуются).

FROM php:7.2-fpm
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip pcntl opcache bcmath\
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

2.2 Используйте PECL для установки расширений

На DockerHub доступно всего несколько расширений PHP, и установка дополнительных расширений по-прежнему требуется. PECL В образе Docker установка pecl Загрузка, компиляция, установка расширений и их использование docker-php-ext-включить

Используйте ниже PECL Установленный PHP Из redis Также grpc Расширяется.

RUN pecl install grpc \
     && docker-php-ext-enable grpc \
     && pecl install -o -f redis \
     && docker-php-ext-enable redis \
     && rm -rf /tmp/pear

2.3 Расширение для установки исходного кода

Некоторые расширения недоступны docker-php-ext-установка Установка также не удалась PECL Установка может быть выполнена только путем компиляции исходного кода (в данном случае это Phalcon, расширяемая платформа PHP, но настройка сложнее, и я расскажу об этом позже), а расширения PHP также могут быть установлены с помощью исходного кода в Docker.

RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \
    && mkdir -p /tmp/xcache \
    && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \
    && rm xcache.tar.gz \
    && docker-php-ext-configure /tmp/xcache --enable-xcache \
    && docker-php-ext-install /tmp/xcache \
    && rm -r /tmp/xcache

Выступление в конце

Эта статья посвящена тому, как установить расширение PHP в Docker. На самом деле, есть много других концепций, связанных с Docker, которые необходимо понять, чтобы создать нужный вам файл изображения. К счастью, в официальном руководстве по Docker есть подробные объяснения. Заинтересованные люди должны следовать инструкциям руководства и практиковать его самостоятельно.

В настоящее время языком разработки на стороне сервиса в организации сервисного бизнеса в основном является Go. PHP чаще используется в некоторых старых системах, системах управления за кулисами или системах активного класса. Количество PHP-кодов, которые я написал за последние два месяца, можно посчитать. Больше времени тратится на написание кодов Go. Итак, есть несколько недавних технических статей о классах PHP, а затем есть время написать о том, как установить и настроить Phalcon в Docker.