将图像 php:7.2-apache 与 docker-compose 一起使用时如何启用 php 扩展?

How to enable php extensions when using the image php:7.2-apache with docker-compose?

我想 运行 一个带有 php 容器内扩展的 apache 网络服务器,使用 docker 组成部署。

我的撰写文件如下所示:

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 容器中 运行 php -m 查看已安装和启用的模块。

您可以像这样编辑您的 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/

docker-compose.yml 旁边创建一个名为 Dockerfile 的文件,内容如下:

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.