2016-07-19 2 views
1

я работаю на PHP API, и я хотел бы отключить неиспользуемые модули PHP внутри моей PHP-FPM изображения, такие как «sqlite3, п.д.о. ..».Докер - Как отключить PHP доб/модули

Я новичок-докер, и я хотел бы знать, есть ли что-нибудь похожее на docker-php-ext-enable, если нет, что лучше всего подходит для отключения неиспользуемых модулей php.

+0

Как насчет файла 'php.ini'? – JustOnUnderMillions

+0

https://hub.docker.com/_/php/ – JustOnUnderMillions

+0

У меня есть собственный файл php.ini в/usr/local/etc/php .. что вы предлагаете? Я не могу найти ничего полезного в вышеупомянутой ссылке .. php поставляется с некоторыми модулями по умолчанию, и я хотел бы отключить некоторые из них. –

ответ

0

Да, это возможно.

Взятые из https://hub.docker.com/_/php/

Например, если вы хотите иметь PHP-FPM изображение с iconv, mcrypt и gd расширений, вы можете наследовать базовый образ, который вам нравится, и написать свой собственный Dockerfile как это:

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 

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

+0

Таким образом, вы можете отключить или удалить после того, как мы уже установили это? –

1

Наконец-то я нашел ключевой момент.

Внутри док-станции 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 

Чтобы отключить некоторые внешние модуль ension, сделать реж disabled и переместить этот файл .ini внутри него, например:

mkdir disalbled 
mv docker-php-ext-opcache.ini disabled 
mv opcache-recommended.ini 

Наконец, нажмите Ctrl+D для выхода из контейнера, а затем перезапустить контейнер, чтобы сделать изменения работы.

docker restart php_container_name 

Вы можете попасть в контейнер и работать php -m видеть, касающиеся расширения ушли.

+0

Есть опечатка 'mkdir disalbled', не может ее изменить, потому что редактирование должно быть как минимум 10 отредактированных символов. –