Docker - 如何禁用 PHP 分机/模块
Docker - How to disable PHP ext / modules
我正在开发 PHP API,我想 禁用我的 中未使用的 php 模块 PHP-FPM图片,如"sqlite3, pdo ..".
我是一个 docker 初学者,我想知道是否有类似 docker-php-ext-enable
的东西,如果没有,禁用未使用的 php 模块的最佳做法是什么。
是的,这是可能的。
取自https://hub.docker.com/_/php/
For example, if you want to have a PHP-FPM image with iconv
, mcrypt
and gd
extensions, you can inherit the base image that you like, and write your own Dockerfile like this:
FROM php:7.0-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
Remember, you must install dependencies for your extensions manually. If an extension needs custom configure
arguments, you can use the docker-php-ext-configure
script like this example.
终于找到重点了
在docker php 容器中,所有已注册的模块都保存在以下路径下的配置文件中。
/usr/local/etc/php/conf.d/*.ini
bash
进入容器:
docker exec -it php_container_name bash
您可以通过php -m
:
列出所有启用的模块
和cd
进入那个文件夹,你可以看到相关的配置文件:
cd /usr/local/etc/php/conf.d/
ls
# output
docker-php-ext-mcrypt.ini docker-php-ext-mysqli.ini
docker-php-ext-opcache.ini opcache-recommended.ini
docker-php-ext-zip.ini
要禁用某些扩展模块,请创建目录 disabled
,然后将 .ini
文件移入其中,例如:
mkdir disabled
mv docker-php-ext-opcache.ini disabled
mv opcache-recommended.ini
最后,按Ctrl+D
退出容器,然后重启容器使更改生效。
docker restart php_container_name
你可以进入容器运行php -m
看看,相关的扩展没有了
借用阿尔弗雷德的回答,但我今天做了这些。
alias disDebugCust="docker exec -it xdebugContainer bash -c 'cd /usr/local/etc/php/conf.d/ && mkdir -p disabled && mv xdebug.ini disabled && /etc/init.d/apache2 reload'"
alias enDebugCust="docker exec -it xdebugContainer bash -c 'cd /usr/local/etc/php/conf.d/disabled && mv xdebug.ini /usr/local/etc/php/conf.d/ && /etc/init.d/apache2 reload'"
首先我们执行到容器中。
然后我们进入配置文件夹。
然后,如果不存在,我们创建一个名为 disabled 的新目录。
然后我们移动ini文件。
最后我们重启apache。
第二个命令只是将其移回并重新启动 apache。
我正在开发 PHP API,我想 禁用我的 中未使用的 php 模块 PHP-FPM图片,如"sqlite3, pdo ..".
我是一个 docker 初学者,我想知道是否有类似 docker-php-ext-enable
的东西,如果没有,禁用未使用的 php 模块的最佳做法是什么。
是的,这是可能的。
取自https://hub.docker.com/_/php/
For example, if you want to have a PHP-FPM image with
iconv
,mcrypt
andgd
extensions, you can inherit the base image that you like, and write your own Dockerfile like this:
FROM php:7.0-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
Remember, you must install dependencies for your extensions manually. If an extension needs custom
configure
arguments, you can use thedocker-php-ext-configure
script like this example.
终于找到重点了
在docker php 容器中,所有已注册的模块都保存在以下路径下的配置文件中。
/usr/local/etc/php/conf.d/*.ini
bash
进入容器:
docker exec -it php_container_name bash
您可以通过php -m
:
和cd
进入那个文件夹,你可以看到相关的配置文件:
cd /usr/local/etc/php/conf.d/
ls
# output
docker-php-ext-mcrypt.ini docker-php-ext-mysqli.ini
docker-php-ext-opcache.ini opcache-recommended.ini
docker-php-ext-zip.ini
要禁用某些扩展模块,请创建目录 disabled
,然后将 .ini
文件移入其中,例如:
mkdir disabled
mv docker-php-ext-opcache.ini disabled
mv opcache-recommended.ini
最后,按Ctrl+D
退出容器,然后重启容器使更改生效。
docker restart php_container_name
你可以进入容器运行php -m
看看,相关的扩展没有了
借用阿尔弗雷德的回答,但我今天做了这些。
alias disDebugCust="docker exec -it xdebugContainer bash -c 'cd /usr/local/etc/php/conf.d/ && mkdir -p disabled && mv xdebug.ini disabled && /etc/init.d/apache2 reload'"
alias enDebugCust="docker exec -it xdebugContainer bash -c 'cd /usr/local/etc/php/conf.d/disabled && mv xdebug.ini /usr/local/etc/php/conf.d/ && /etc/init.d/apache2 reload'"
首先我们执行到容器中。 然后我们进入配置文件夹。 然后,如果不存在,我们创建一个名为 disabled 的新目录。 然后我们移动ini文件。 最后我们重启apache。
第二个命令只是将其移回并重新启动 apache。