Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install extension for php via docker-php-ext-install?

In order to resolve an issue, I am now trying install the mysql pdo via

docker-php-ext-install 

as pointed out in the README of the php image.

Yet my call fails stating:

Libraries have been installed in:    /usr/src/php/ext/mysqli/modules  If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:    - add LIBDIR to the `LD_LIBRARY_PATH' environment variable      during execution    - add LIBDIR to the `LD_RUN_PATH' environment variable      during linking    - use the `-Wl,--rpath -Wl,LIBDIR' linker flag    - have your system administrator add LIBDIR to `/etc/ld.so.conf'  See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ----------------------------------------------------------------------  Build complete. Don't forget to run 'make test'.  Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/ Installing header files:           /usr/local/include/php/ find . -name \*.gcno -o -name \*.gcda | xargs rm -f find . -name \*.lo -o -name \*.o | xargs rm -f find . -name \*.la -o -name \*.a | xargs rm -f  find . -name \*.so | xargs rm -f find . -name .libs -a -type d|xargs rm -rf rm -f libphp.la       modules/* libs/* + cd /usr/src/php/ext/mysqlnd + phpize Cannot find config.m4.  Make sure that you run '/usr/local/bin/phpize' in the top level source directory of the module  ERROR: Service 'phlaconapp' failed to build: The command '/bin/sh -c docker-php-ext-install mysqli mysqlnd pdo pdo_mysql zip' returned a non-zero code: 1 

This is my docker-compose.yml:

phlaconapp:     hostname: phaclonapp     dockerfile: Dockerfile     build: ./     ports:         - "1080:80"         - "1043:433"     environment:         TERM: xterm-color         ENVIRONMENT: dev     volumes:         - ./:/var/www/html/     links:         - mysql mysql:     image: mysql:5.6     volumes:         - ./docker/mysql.d:/etc/mysql/conf.d     ports: ["3306:3306"]     environment:         MYSQL_ROOT_PASSWORD: 'root' 

This is my Dockerfile:

FROM php:5.6-apache  RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \     php -r "if (hash_file('SHA384', 'composer-setup.php') === '070854512ef404f16bac87071a6db9fd9721da1684cd4589b1196c3faf71b9a2682e2311b36a5079825e155ac7ce150d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && \     php composer-setup.php && \     php -r "unlink('composer-setup.php');"   RUN apt-get update && \     apt-get install vim git -y RUN docker-php-ext-install mysqli mysqlnd pdo pdo_mysql zip   RUN  cd /  && \     git clone --depth=1 git://github.com/phalcon/cphalcon.git && \     cd cphalcon/build && \     ./install  RUN echo "extension=phalcon.so" > /usr/local/etc/php/conf.d/phalcon.ini RUN a2enmod rewrite 

and running docker-compose build won't finish.

like image 645
k0pernikus Avatar asked May 30 '16 14:05

k0pernikus


People also ask

What is Docker PHP ext install?

docker-php-ext-enable This command is used to start PHP extension of When we use pecl to install the PHP extension, the extension is not started by default. If you want to use this extension, you must configure it in the php. ini configuration file to use this PHP extension.

Does Docker install PHP?

You don't need to make any changes to the PHP or NGINX configuration on the new server. You don't even need to install PHP or NGINX on the server itself. They'll be automatically installed by Docker when you launch the application.


1 Answers

I had the same problem a while ago. I started a container and typed the ext-install command into this container. Once I found all the dependencies, I wrote them into the Dockerfile.

Example:

RUN apt-get update && apt-get install -y \ libmcrypt-dev \ && docker-php-ext-install -j$(nproc) mcrypt 

There is a dependency that libmcrypt-dev needed before you can run docker-php-ext-install mcrypt

I've checked my older Dockerfiles and found something which might help you

FROM php:5.6-apache  RUN apt-get update && apt-get install -y \         libfreetype6-dev \         libjpeg62-turbo-dev \         libmcrypt-dev \         libpng12-dev \     libicu-dev \      libxml2-dev \     vim \         wget \         unzip \         git \     && docker-php-ext-install -j$(nproc) iconv intl xml soap mcrypt opcache pdo pdo_mysql mysqli mbstring \     && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \     && docker-php-ext-install -j$(nproc) gd  RUN a2enmod rewrite && mkdir /composer-setup && wget https://getcomposer.org/installer -P /composer-setup && php /composer-setup/installer --install-dir=/usr/bin && rm -Rf /composer-setup && curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony && chmod a+x /usr/local/bin/symfony # Create symlink for default conf RUN ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf && mkdir /composer-setup && wget https://getcomposer.org/installer -P /composer-setup && php /composer-setup/installer --install-dir=/usr/bin && rm -Rf /composer-setup && curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony && chmod a+x /usr/local/bin/symfony 
like image 190
Florian Avatar answered Oct 09 '22 05:10

Florian