David
David

Reputation: 553

Install dependencies of PHP extensions

I've started learning Docker and now I'm building my own container with PHP7 and Apache. I have to enable some PHP extensions, but I would like to know how do you know what packages(dependencies) should be installed before installing the extension.

This is my Dockerfile at the moment:

FROM php:7.0-apache
RUN apt-get update && apt-get install -y libpng-dev 
RUN docker-php-ext-install gd

In this case, to enable gd extension, I googled the error returned on building step and I found that it requires the package libpng-dev, but it's annoying to do these steps for every single extension that I want to install.

How do you manage this kind of problem?

Upvotes: 2

Views: 3107

Answers (3)

Sebastian
Sebastian

Reputation: 6009

The process is indeed annoying and very much something that could be done by a computer. Luckily someone wrote a script to do exactly that: docker php extension installer

Your example can then be written as:

FROM php:7.0-apache

#get the script
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/

#install the script
RUN chmod uga+x /usr/local/bin/install-php-extensions && sync

#run the script
RUN install-php-extensions gd

Upvotes: 3

sp0gg
sp0gg

Reputation: 4132

Creating your own Dockerfiles involves trial and error - or building on and tweaking the work of others.

If you haven't already found this, take a look: https://hub.docker.com/r/chialab/php/

This image appears to have extensions added on top of the official base image. If you don't need all of the extensions in this image, you could look at the source of this image and tweak it to your liking.

Upvotes: 0

Truong Dang
Truong Dang

Reputation: 3417

Here is what i do, install php and some php extensions and tools. Things that I usual need...

# Add the "PHP 7" ppa
RUN add-apt-repository -y \
ppa:ondrej/php

#Install PHP-CLI 7, some PHP extentions and some useful Tools with apt
RUN apt-get update && apt-get install -y --force-yes \
php7.0-cli \
php7.0-common \
php7.0-curl \
php7.0-json \
php7.0-xml \
php7.0-mbstring \
php7.0-mcrypt \
php7.0-mysql \
php7.0-pgsql \
php7.0-sqlite \
php7.0-sqlite3 \
php7.0-zip \
php7.0-memcached \
php7.0-gd \
php7.0-fpm \
php7.0-xdebug \
php7.1-bcmath \
php7.1-intl \
php7.0-dev \
libcurl4-openssl-dev \
libedit-dev \
libssl-dev \
libxml2-dev \
xz-utils \
sqlite3 \
libsqlite3-dev \
git \
curl \
vim \
nano \
net-tools \
pkg-config \
iputils-ping

# remove load xdebug extension (only load on phpunit command)
RUN sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini

Upvotes: 0

Related Questions