Coder Social home page Coder Social logo

yasinugurbelek / docker-php-extension-installer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mlocati/docker-php-extension-installer

0.0 0.0 0.0 291 KB

Easily install PHP extension in Docker containers

License: MIT License

Shell 73.54% PHP 25.32% Dockerfile 0.21% Batchfile 0.93%

docker-php-extension-installer's Introduction

TravisCI Build Status

Easy installation of PHP extensions in official PHP Docker images

This repository contains a script that can be used to easily install a PHP extension inside the official PHP Docker images.

The script will install all the required APT/APK packages; at the end of the script execution, the no-more needed packages will be removed so that the image will be much smaller.

The script works both for Alpine and Debian Linux.

Usage

You have two ways to use this script within your Dockerfiles: you can download the script on the fly, or you can grab it from the mlocati/php-extension-installer Docker Hub image. With the first method you are sure you'll always get the very latest version of the script, with the second method the process is faster since you'll use a local image.

For example, here are two Dockerfiles that install the GD and xdebug PHP extensions:

Downloading the script on the fly

FROM php:7.2-cli

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

RUN chmod uga+x /usr/local/bin/install-php-extensions && sync && \
    install-php-extensions gd xdebug

Copying the script from a Docker image

FROM php:7.2-cli

COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/

RUN install-php-extensions gd xdebug

Supported PHP extensions

Extension PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2 PHP 7.3 PHP 7.4
amqp V V V V V V
apcu V V V V V V
bcmath V V V V V V
bz2 V V V V V V
calendar V V V V V V
cmark V V V V V
dba V V V V V V
enchant V V V V V V
exif V V V V V V
gd V V V V V V
gettext V V V V V V
gmagick V V V V V V
gmp V V V V V V
grpc V V V V V V
http V V V V V V
igbinary V V V V V V
imagick V V V V V V
imap V V V V V V
interbase V V V V V
intl V V V V V V
ldap V V V V V V
mailparse V V V V V V
mcrypt V V V V V V
memcache V V V V V V
memcached V V V V V V
mongo V
mongodb V V V V V V
msgpack V V V V V V
mssql V
mysql V
mysqli V V V V V V
odbc V V V V V V
opcache V V V V V V
opencensus V V V V V
parallel V V V V
pcntl V V V V V V
pcov V V V V V
pdo_dblib V V V V V V
pdo_firebird V V V V V V
pdo_mysql V V V V V V
pdo_odbc V V V V V V
pdo_pgsql V V V V V V
pdo_sqlsrv V V V V V
pgsql V V V V V V
propro V V V V V V
protobuf V V V V V V
pspell V V V V V V
pthreads V V
raphf V V V V V V
rdkafka V V V V V V
recode V V V V V
redis V V V V V V
shmop V V V V V V
snmp V V V V V V
soap V V V V V V
sockets V V V V V V
solr V V V V V V
sqlsrv V V V V V
ssh2 V V V V V V
sybase_ct V
sysvmsg V V V V V V
sysvsem V V V V V V
sysvshm V V V V V V
tidy V V V V V V
timezonedb V V V V V V
uopz V V V V V V
uuid V V V V V V
wddx V V V V V
xdebug V V V V V V
xmlrpc V V V V V V
xsl V V V V V V
yaml V V V V V V
zip V V V V V V

Number of supported extensions: 73

PS: the pre-installed PHP extensions are excluded from this list. You can list them with the following command (change php:7.2-cli to reflect the PHP version you are interested in):

docker run --rm -it php:7.2-cli php -m

Special requirements

Some extension has special requirements:

Extension Requirements
parallel Requires images with PHP compiled with thread-safety enabled (zts).
pthreads Requires images with PHP compiled with thread-safety enabled (zts).

How to contribute

Formatting code

Before submitting any pull request, be sure to execute the lint script in the scripts directory (or lint.bat on Windows).

Adding support to a new PHP extension?

  1. change the install-php-extensions script
  2. update the data/supported-extensions file, adding a new line with the handle of the extension and the list of supported PHP versions
  3. if the extension requires ZTS images:
    add a new line to the data/special-requirements file, with the extension handle followed by a space and zts

See this pull request for an example.

Changing the supported PHP versions for an already supported PHP extension?

  1. change the install-php-extensions script
  2. update the data/supported-extensions file, adding the new PHP version to the existing line corresponding to the updated extension

See this pull request for an example.

Improving code for an already supported extension?

If you change some code that affects one or more extensions, please add a line with Test: extension1, extension2 to the message of one of the pull request commits. That way, the test jobs will check the extension even if you don't touch the data/supported-extensions file.

Here's an example of a commit message:

Improve the GD and ZIP extensions

Test: gd, zip

Tests only check the installation of a single PHP extension at a time. If you want to test installing more PHP extensions at the same time, use a commit message like this:

Improve the GD and ZIP extensions

Test: gd+zip

If your pull request contains multiple commits, we'll check the "Test:" message of every commit. If you want to stop parsing next commits, add -STOP- in the "Test:" line, for example:

Improve the GD and ZIP extensions

Test: gd, zip, -STOP-

See this pull request for an example.

Do you want to really say thank you?

You can offer me a monthly coffee or a one-time coffee ๐Ÿ˜‰

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.