Я хочу запустить веб-сервер apache с расширением php внутри контейнера, используя docker compose в качестве развертывания.
Мой компоновочный файл выглядит так:
version: '3.1'
services:
php:
image: php:7.2-apache
ports:
- 8089:80
volumes:
- ./php/www:/var/www/html/
как я могу включить следующие расширения.
apache2
php7.2
php-xdebug
php7.2-mcrypt
php-apcu
php-apcu-bc
php7.2-json
php-imagick
php-gettext
php7.2-mbstring






Прежде всего, вы можете запустить php -m в контейнере php, чтобы увидеть установленные и включенные модули.
Вы можете отредактировать свой docker-compose.yml следующим образом:
version: '3.1'
services:
php:
# image: php:7.2-apache # remember to comment this line
build: .
ports:
- 8089:80
volumes:
- ./php/www:/var/www/html/
Создайте файл с именем Dockerfile рядом с docker-compose.yml со следующим содержимым:
FROM php:7.2-apache
# then add the following `RUN ...` lines in each separate line, like this:
RUN pecl install xdebug && docker-php-ext-enable xdebug
...
Наконец, давайте по одному:
apache2
Установлен.
php7.2
Включен.
php-xdebug
Добавьте Dockerfile:
RUN pecl install xdebug && docker-php-ext-enable xdebug
php7.2-mcrypt
Добавьте в Dockerfile:
RUN apt-get install libmcrypt-dev
RUN pecl install mcrypt && docker-php-ext-enable mcrypt
php-apcu
Добавьте в Dockerfile:
RUN pecl install apcu && docker-php-ext-enable apcu
php-apcu-bc
Добавьте в Dockerfile:
RUN pecl install apcu_bc
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
RUN echo 'extension=apc.so' >> /usr/local/etc/php/php.ini
php7.2-json
Установлен.
php-imagick
Добавьте в Dockerfile:
RUN apt install -y libmagickwand-dev --no-install-recommends && \
pecl install imagick && docker-php-ext-enable imagick
php-gettext
RUN docker-php-ext-install gettext && \
docker-php-ext-enable gettext
php7.2-mbstring
Is enabled.