Easily install PHP extension in Docker containers

Overview

Downloaded GitHub Releases Docker Hub pulls Test recent

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.

Supported docker images are all the Alpine/Debian versions, except for PHP 5.5 where we only support Debian 8 (jessie) (that is, php:5.5, php:5.5-apache, php:5.5-cli, php:5.5-fpm, php:5.5-zts). See also the notes in the Special requirements section.

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 some Dockerfiles that install the GD and xdebug PHP extensions:

Downloading the script on the fly

With the Dockerfile

FROM php:7.2-cli

ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

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

With curl

FROM php:7.2-cli

RUN curl -sSLf \
        -o /usr/local/bin/install-php-extensions \
        https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions && \
    chmod +x /usr/local/bin/install-php-extensions && \
    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/local/bin/

RUN install-php-extensions gd xdebug

Warning: by using this method you may use an outdated version of the mlocati/php-extension-installer image.

In order to be sure the COPY instruction uses the very latest version, you can run:

docker pull mlocati/php-extension-installer

Installing specific versions of an extension

Simply append -<version> to the module name. For example:

install-php-extensions xdebug-2.9.7

The script also supports resolving compatible versions by prefixing the version with a caret (^). For example:

# Install the most recent xdebug 2.x version (for example 2.9.8)
install-php-extensions xdebug-^2
# Install the most recent xdebug 2.8.x version (for example 2.8.1)
install-php-extensions xdebug-^2.8

Pre-release versions extensions available on PECL can be setup by suffixing the extension's name with its state i.e. alpha, beta, rc, preview, devel or snapshot. For example:

install-php-extensions xdebug-beta

TIP: When the latest version available on PECL is not stable, and you want to keep the last stable version, force it by suffixing the extension's name with the stable state. For example:

install-php-extensions mongodb-stable

Installing composer

You can also install composer, and you also can specify a major version of it, or a full version.

Examples:

# Install the latest version
install-php-extensions @composer
# Install the latest 1.x version
install-php-extensions @composer-1
# Install a specific version
install-php-extensions @composer-2.0.2

Issue with Let's Encrypt certificates

The root CA certificate of Let's Encrypt changes (more details here).
That breaks old linux distributions, namely:

  • Debian Jessie (8)
  • Debian Stretch (9)
  • Alpine Linux 3.7
  • Alpine Linux 3.8

This script can fix this issue: simply pass @fix_letsencrypt as an argument:

install-php-extensions @fix_letsencrypt

Supported PHP extensions

Extension PHP 5.5 PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2 PHP 7.3 PHP 7.4 PHP 8.0 PHP 8.1
amqp
apcu
apcu_bc
ast
bcmath
blackfire
bz2
calendar
cmark
csv
dba
decimal
ds
enchant
ev
event
excimer
exif
ffi
gd
gearman
geoip
geospatial
gettext
gmagick
gmp
gnupg
grpc
http
igbinary
imagick
imap
inotify
interbase
intl
ioncube_loader
jsmin
json_post
ldap
lzf
mailparse
maxminddb
mcrypt
memcache
memcached
mongo
mongodb
mosquitto
msgpack
mssql
mysql
mysqli
oauth
oci8
odbc
opcache
opencensus
openswoole
parallel*
pcntl
pcov
pdo_dblib
pdo_firebird
pdo_mysql
pdo_oci
pdo_odbc
pdo_pgsql
pdo_sqlsrv*
pgsql
propro
protobuf
pspell
pthreads*
raphf
rdkafka
recode
redis
seaslog
shmop
smbclient
snmp
snuffleupagus
soap
sockets
solr
sourceguardian
spx
sqlsrv*
ssh2
stomp
swoole
sybase_ct
sysvmsg
sysvsem
sysvshm
tensor*
tidy
timezonedb
uopz
uploadprogress
uuid
vips*
wddx
xdebug
xhprof
xlswriter
xmldiff
xmlrpc
xsl
yac
yaml
yar
zephir_parser
zip
zookeeper
zstd

Number of supported extensions: 116

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 php:7.2-cli php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

Configuration

You can configure the behavior of the script, as well as fine-tune some extensions in order fit your needs, by using environment variables.

Here's an example:

IPE_LZF_BETTERCOMPRESSION=1 install-php-extensions lzf

Here's the list of all the supported environment variables:

Extension Environment variable Description
IPE_DONT_ENABLE=1 By default the script will install and enable the extensions.
If you want to only install them (without enabling them) you can set this environment variable.
To enable the extensions at a later time you can execute the command docker-php-ext-enable-<extension> (for example: docker-php-ext-enable-xdebug).
Beware: installing some PHP extensions require that other PHP extensions are already enabled, so use this feature wisely.
IPE_KEEP_SYSPKG_CACHE=1 By default the script will clear the apt/apk/pear cache in order to save disk space. You can disable it by setting this environment variable
lzf IPE_LZF_BETTERCOMPRESSION=1 By default install-php-extensions compiles the lzf extension to prefer speed over size; you can use this environment variable to compile it preferring size over speed
event IPE_EVENT_NAMESPACE=... By default the event classes are defined in the root namespace. You can use this environment variable to specify a custom namespace
gd IPE_GD_WITHOUTAVIF=1 Since PHP 8.1, gd supports the AVIF format. Enabling it requires compiling libaom/libdav1d/libyuv/libavif, which is time-consuming. You can disable AVIF support by setting this environment variable

Special requirements

Some extensions have special requirements:

Extension Requirements
parallel Requires images with PHP compiled with thread-safety enabled (zts).
pdo_sqlsrv • Not available in alpine3.7 docker images
• Not available in alpine3.8 docker images
• Not available in bullseye docker images
pthreads Requires images with PHP compiled with thread-safety enabled (zts).
sqlsrv • Not available in alpine3.7 docker images
• Not available in alpine3.8 docker images
• Not available in 7.1-alpine3.9 docker images
• Not available in 7.1-alpine3.10 docker images
• Not available in bullseye docker images
tensor Not available in alpine3.15 docker images
vips • Not available in alpine3.7 docker images
• Not available in alpine3.8 docker images
• Not available in alpine3.9 docker images
• Not available in jessie docker images

How do I know which Linux distribution I am using?

You can run this command:

cat /etc/os-release

For example:

  • for Debian 11 (Bullseye) you'll see:
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
  • for Alpine Linux 3.14 you'll see:
    PRETTY_NAME="Alpine Linux v3.14"

Tests

When submitting a pull request, a GitHub Action is executed to check if affected PHP extensions actually work (see below).

Furthermore, we also check that new versions of extensions in the PECL repository will still work. This is done on a scheduled basis with another GitHub Action.
In case of failure, a message is sent to a Telegram Channel.
Feel free to subscribe to it to receive failure notifications.

How to contribute

Formatting code

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

If you don't do that, and if there's a coding style error, you'll see that the Check shell coding style and/or the Check PHP coding style GitHub Actions will fail.

The error will be something like this:

--- filename.orig
+++ filename
@@ -line number,7 +line number,7 @@
     good line of code #1
     good line of code #2
     good line of code #3
-    the original line with a wrong coding style
+    the line wrong coding style that has been corrected
     good line of code #4
     good line of code #5
     good line of code #6

So, you should fix highlighted line (the one(s) at line number) by replacing what you see after the - with what you see after the +

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.

PHP requirements and configure options

PHP extensions published on the PECL archive contain a package.xml (or package2.xml) file describing the supported PHP versions and the options that can be used to compile it. When we add support for a new PHP extension, and when a new version of a PHP extension is released, we have to check those constraints.

It's a rather tedious task, so I developed a project that lets you easily check those constraints: you can find it at https://mlocati.github.io/pecl-info (here you can find its source code).

For the maintainers

See the MAINTAINERS.md file.

Do you want to really say thank you?

You can offer me a monthly coffee or a one-time coffee 😉

Issues
  • Cleanup does not leave already installed packages

    Cleanup does not leave already installed packages

    As far as I can see cleanup (run by default since f164c691cdafd0b10242a4bb251ed6b96e59f2d8) does not leave already installed packages, but please correct me if I'm wrong. This means that the following will not work

    RUN apt-get install -y --no-install-recommends \
        a-package-i-need-later-on-and-is-needed-by-an-extension
    RUN install-php-extensions an-extension
    RUN something-that-needs-a-package-i-need-later-on-and-is-needed-by-an-extension
    

    Shouldn't just the delta of what was on the system and what is later on on the system be cleaned?

    opened by gisostallenberg 16
  • Error on automation with Docker Hub but not when running manually

    Error on automation with Docker Hub but not when running manually

    I have an automated build for when new versions of PHP come out. It is based on the php:7.4-fpm-alpine image which currently uses Alpine 3.14.0 and PHP 7.4.21. Here is my Dockerfile.

    On our automated build, it appears that igbinary having an issue:

    running: make -j2
    /bin/sh /tmp/pear/temp/pear-build-defaultusericJmFk/igbinary-3.2.3/libtool --mode=compile cc -g -O2 -O2 -Wall -Wpointer-arith -Wcast-align -Wwrite-strings -Wswitch -finline-limit=10000 --param large-function-growth=10000 --param inline-unit-growth=10000 -I. -I/tmp/pear/temp/igbinary -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultusericJmFk/igbinary-3.2.3/include -I/tmp/pear/temp/pear-build-defaultusericJmFk/igbinary-3.2.3/main -I/tmp/pear/temp/igbinary -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/igbinary/src/php7/igbinary.c -o src/php7/igbinary.lo
    make: /bin/sh: Operation not permitted
    make: *** [Makefile:192: src/php7/igbinary.lo] Error 127
    ERROR: `make -j2' failed
    

    As I said, this is not happening when running manually.

    Do you think that Docker Hub could be caching an old image or Github version of docker-php-extension-installer?

    From the build.log it does look like it is using docker-php-extension-installer v.1.2.39.

    opened by if-kenn 13
  • Add support for grpc and protobuf

    Add support for grpc and protobuf

    I've moved to using your (excellent) script for installing my modules, and wanted to add a couple more that I can using.

    Test: gprc, opencensus, protobuf

    opened by mcfedr 13
  • install specific version

    install specific version

    hi, is there anything I missed, that gives me the chance to install a specific version of an extension ???

    thanks

    opened by michabbb 11
  • Tag releases on master branch

    Tag releases on master branch

    It would be great to be able to use a specific version of the script when building docker images rather than just a general 'latest'. Moving forward this might also be helpful to maintainers in being able to remove support for older php versions and distros

    opened by mcfedr 10
  • Run CI on push as well

    Run CI on push as well

    allow easier development without the need to open PR first

    opened by mvorisek 9
  • Unable to locate package libenchant1c2a

    Unable to locate package libenchant1c2a

    I've always been able to install the list of extensions. Today, (when upgrading my Docker image from PHP 7.4.21 to 7.4.22) I do get an error on the enchant package. I'm using the php:7.4.22-fpm Docker image for PHP.

    See the logs below:

    #7 0.267 install-php-extensions v.1.2.57                                                                                                                                                    
    #7 1.872 Updating channel "pecl.php.net"                                                                                                                                                    
    #7 2.108 Channel "pecl.php.net" is up to date                                                                                                                                               
    #7 2.232 Get:1 http://security.debian.org/debian-security bullseye-security InRelease [44.1 kB]
    #7 2.271 Get:2 http://deb.debian.org/debian bullseye InRelease [113 kB]
    #7 2.301 Get:3 http://deb.debian.org/debian bullseye-updates InRelease [36.8 kB]
    #7 2.386 Get:4 http://security.debian.org/debian-security bullseye-security/main amd64 Packages [25.8 kB]
    #7 2.466 Get:5 http://deb.debian.org/debian bullseye/main amd64 Packages [8178 kB]
    #7 4.191 Fetched 8397 kB in 2s (4082 kB/s)
    #7 4.191 Reading package lists...
    #7 5.610 FAILED TO LIST THE WHOLE PACKAGE LIST FOR
    #7 5.610 libenchant1c2a libfreetype6 libjpeg62-turbo ^libpng[0-9]+-[0-9]+$ libxpm4 ^libwebp[0-9]+$ libc-client2007e ^libicu[0-9]+$ libmcrypt4 libpq5 libpq5 ^libtidy-?[0-9][0-9.\-]*(deb[0-9])?$ ^libxslt1\.1$ ^libzip[0-9]$ ^libmbedtls[0-9]*$ 
    #7 5.610 
    #7 5.610 COMMAND OUTPUT:
    #7 5.610 Reading package lists...
    #7 5.610 Building dependency tree...
    #7 5.610 Reading state information...
    #7 5.610 E: Unable to locate package libenchant1c2a
    #7 5.610 
    #7 5.610 E: apt-get failed
    

    When I remove the enchant from the list, all extensions get installed without errors. However, I would like to have the enchant extension installed as well.

    opened by GlennM 9
  • Add support/testing for PHP 8.1

    Add support/testing for PHP 8.1

    fixes https://github.com/mlocati/docker-php-extension-installer/issues/271

    opened by mvorisek 9
  • fix amqp for jessie

    fix amqp for jessie

    @mlocati I'm doing some further tests locally

    libssl1.0-dev is present only in stretch https://packages.debian.org/stretch/libssl1.0-dev

    librabbitmq4 is not present in jessie, but librabbitmq-dev is https://packages.debian.org/stretch/librabbitmq4 https://packages.debian.org/jessie/librabbitmq-dev

    Humh is jessie supported anymore? zip is not installable in jessie, I don't use jessie anymore.

    I tested on 7.1-cli-jessie with igbinary redis amqp apcu bcmath gettext gmp intl opcache pdo_dblib pdo_sqlite pdo_pgsql pgsql memcached imagick rdkafka shmop sockets sysvmsg sysvsem sysvshm wddx xml xsl zip ldap

    FAILED TO LIST THE WHOLE PACKAGE LIST FOR
    librabbitmq4 libsybdb5 libpq5 libpq5 libmemcachedutil2 libmagickwand-6.q16-? librdkafka++1 libxslt1.1 libzip4 libmbedtls1?
    
    COMMAND OUTPUT:
    Reading package lists...
    Building dependency tree...
    Reading state information...
    E: Unable to locate package librabbitmq4
    E: Unable to locate package libzip4
    E: Unable to locate package libmbedtls1?
    E: Couldn't find any package by regex 'libmbedtls1?'
    
    E: apt-get failed
    FAILED TO LIST THE WHOLE PACKAGE LIST FOR
    librabbitmq-dev libssh-dev libgmp-dev libicu-dev freetds-dev libpq-dev libpq-dev libmemcached-dev zlib1g-dev libmagickwand-dev librdkafka-dev libxml2-dev libxslt-dev cmake gnutls-dev libssl-dev libzip-dev libbz2-dev libmbedtls-dev zlib1g-dev libldap2-dev
    
    COMMAND OUTPUT:
    Reading package lists...
    Building dependency tree...
    Reading state information...
    E: Unable to locate package libmbedtls-dev
    
    E: apt-get failed
    ### INSTALLING REQUIRED PACKAGES ###
    # Packages to be kept after installation:
    # Packages to be used only for installation:
    
    opened by itscaro 9
  • Add support gearman for PHP 8.1

    Add support gearman for PHP 8.1

    Could you please add a support gearman for PHP 8.1 version?

    waiting for external maintainer 
    opened by adrianbecker013 1
  • Building extension from source

    Building extension from source

    First of all, thanks for this amazing utility. It makes installing PHP extensions a breeze. 😍

    I would like to request a feature: allow building some extensions from source.

    For example, the setup-php GitHub Action allows passing a list of extensions like this:

    with:
        extensions: gd,redis-5.3.5,memcached-php-memcached-dev/[email protected]
    

    As you can see, memcached is installed from php-memcached-dev/php-memcached with commit d3b8ce13f13cee3017aa8a00a0cfb2e7709154d8.

    Is this something that can be added at some point?

    enhancement 
    opened by ruudk 9
  • [feature] Install symfony-cli

    [feature] Install symfony-cli

    Allow installation binaries of https://github.com/symfony-cli/symfony-cli/releases

    enhancement 
    opened by gander 0
  • Add support for php-geos library

    Add support for php-geos library

    Many projects, that works with geographic objects, use https://github.com/libgeos/php-geos library to manipulate with geographical figures. It is different from geospatial library and missing in PECL.

    Is it hard to add support for GEOS to this script?

    enhancement 
    opened by MurzNN 0
  • Unable to install the pdo_firebird extension on arm64

    Unable to install the pdo_firebird extension on arm64

    Running the command install-php-extensions pdo_firebird fails on aarch64 / arm64 architecture and distro alpine with php version 7.4

    The full output of this is:

     > [5/5] RUN chmod +x /usr/local/bin/install-php-extensions &&     install-php-extensions pdo_firebird:
    #8 0.187 install-php-extensions v.1.4.2
    #8 1.343 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/aarch64/APKINDEX.tar.gz
    #8 1.764 fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/aarch64/APKINDEX.tar.gz
    #8 2.067 fetch https://dl-4.alpinelinux.org/alpine/v3.11/community/aarch64/APKINDEX.tar.gz
    #8 2.480 OK: 275 MiB in 154 packages
    #8 3.451 ### INSTALLING REQUIRED PACKAGES ###
    #8 3.451 # Packages to be kept after installation:
    #8 3.451 # Packages to be used only for installation: m4 perl autoconf dpkg dpkg-dev libmagic file binutils libatomic libgphobos isl22 mpfr4 mpc1 gcc musl-dev libc-dev g++ perl-error perl-git git-perl icu icu-dev make ncurses-dev re2c
    #8 3.595 (1/25) Installing m4 (1.4.18-r2)
    #8 3.728 (2/25) Installing perl (5.32.1-r0)
    #8 4.060 (3/25) Installing autoconf (2.71-r0)
    #8 4.102 (4/25) Installing binutils (2.35.2-r2)
    #8 4.200 (5/25) Installing dpkg (1.20.9-r0)
    #8 4.240 (6/25) Installing dpkg-dev (1.20.9-r0)
    #8 4.283 (7/25) Installing libmagic (5.40-r1)
    #8 4.326 (8/25) Installing file (5.40-r1)
    #8 4.346 (9/25) Installing libatomic (10.3.1_git20210424-r2)
    #8 4.374 (10/25) Installing libgphobos (10.3.1_git20210424-r2)
    #8 4.452 (11/25) Installing isl22 (0.22-r0)
    #8 4.500 (12/25) Installing mpfr4 (4.1.0-r0)
    #8 4.530 (13/25) Installing mpc1 (1.2.1-r0)
    #8 4.554 (14/25) Installing gcc (10.3.1_git20210424-r2)
    #8 5.341 (15/25) Installing musl-dev (1.2.2-r3)
    #8 5.451 (16/25) Installing libc-dev (0.7.2-r3)
    #8 5.468 (17/25) Installing g++ (10.3.1_git20210424-r2)
    #8 6.008 (18/25) Installing perl-error (0.17029-r1)
    #8 6.030 (19/25) Installing perl-git (2.32.0-r0)
    #8 6.057 (20/25) Installing git-perl (2.32.0-r0)
    #8 6.078 (21/25) Installing icu (67.1-r2)
    #8 6.110 (22/25) Installing icu-dev (67.1-r2)
    #8 6.169 (23/25) Installing make (4.3-r0)
    #8 6.194 (24/25) Installing ncurses-dev (6.2_p20210612-r0)
    #8 6.220 (25/25) Installing re2c (2.1.1-r0)
    #8 6.256 Executing busybox-1.33.1-r6.trigger
    #8 6.265 OK: 511 MiB in 179 packages
    #8 6.458 OK: 511 MiB in 179 packages
    #8 6.476 ### INSTALLING BUNDLED MODULE pdo_firebird ###
    #8 9.605 checking whether make sets $(MAKE)... yes
    #8 9.614 checking build system type... builds/make.new/config/config.guess: unable to guess system type
    #8 9.688
    #8 9.688 This script, last modified 2005-12-23, has failed to recognize
    #8 9.688 the operating system you are using. It is advised that you
    #8 9.688 download the most up to date version of the config scripts from
    #8 9.688
    #8 9.688   http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
    #8 9.688 and
    #8 9.688   http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
    #8 9.688
    #8 9.688 If the version you run (builds/make.new/config/config.guess) is already up to date, please
    #8 9.688 send the following data and any information you think might be
    #8 9.688 pertinent to <[email protected]> in order to provide the needed
    #8 9.688 information to handle your system.
    #8 9.688
    #8 9.688 config.guess timestamp = 2005-12-23
    #8 9.688
    #8 9.688 uname -m = aarch64
    #8 9.688 uname -r = 5.10.47-linuxkit
    #8 9.688 uname -s = Linux
    #8 9.688 uname -v = #1 SMP PREEMPT Sat Jul 3 21:50:16 UTC 2021
    #8 9.688
    #8 9.688 /usr/bin/uname -p =
    #8 9.688 /bin/uname -X     =
    #8 9.688
    #8 9.688 hostinfo               =
    #8 9.688 /bin/universe          =
    #8 9.688 /usr/bin/arch -k       =
    #8 9.688 /bin/arch              = aarch64
    #8 9.688 /usr/bin/oslevel       =
    #8 9.688 /usr/convex/getsysinfo =
    #8 9.688
    #8 9.688 UNAME_MACHINE = aarch64
    #8 9.688 UNAME_RELEASE = 5.10.47-linuxkit
    #8 9.688 UNAME_SYSTEM  = Linux
    #8 9.688 UNAME_VERSION = #1 SMP PREEMPT Sat Jul 3 21:50:16 UTC 2021
    #8 9.690 configure: error: cannot guess build type; you must specify one
    

    Any idea if this can be made so it works on arm64 aswell?

    waiting for feedback 
    opened by rdrenth 6
  • [feature req] add option to preserve compiled sources to allow reuse in multi-staged builds using new buildx layer caching

    [feature req] add option to preserve compiled sources to allow reuse in multi-staged builds using new buildx layer caching

    Short story: each time layer above the layer that installs php dependencies change, this layer has to redo all the work. Also in multistaged builds some dependencies might repeat. While some of it is pretty fast (like downloading packages) some of it is not as fast (compilation from source) and can be optimized.

    I had a look at the code and it seems like these two lines would need to be wrapped in a condition (not sure about /tmp/pickle) https://github.com/mlocati/docker-php-extension-installer/blob/c516929275abe93ec10b617015696fe35890f9cc/install-php-extensions#L3154-L3155

    And maybe to prevent redownloading same packages getPackageSource could be updated too.

    enhancement 
    opened by quentincaffeino 3
  • Missing MSSQL support for Debian Bullseye/11

    Missing MSSQL support for Debian Bullseye/11

    see https://github.com/mvorisek/image-php/actions/runs/1243314446 and https://github.com/mvorisek/image-php/commit/0868d7263af21537661db5a326e0450cd41e7050 source files/changes.

    This repo should test againt Debian Buster & Bullseye images.

    waiting for external maintainer 
    opened by mvorisek 6
  • Running apk upgrade as part of the php-extension-installer causes other issues

    Running apk upgrade as part of the php-extension-installer causes other issues

    As a result of #387 there is now an apk update being run inside the php-extension-installer, which is upgrading a number of our packages (https://github.com/uselagoon/lagoon-images) outside of the scope of the php-extension (see packages below)

    In this case, the upgrade to mariadb-common replaced a config file that needed a permission to be set, but we've also had horror stories in the past with uncontrolled curl upgrades.

    I've looked through the linked alpine issue, but can we think of a way to resolve this underlying 'half-updated' issue that doesn't involve a force update on all packages, as it can lead to unintended consequences?

    ### INSTALLING REQUIRED PACKAGES ###
    # Packages to be kept after installation: 
    # Packages to be used only for installation: m4 perl autoconf dpkg dpkg-dev libmagic file binutils libatomic libgphobos isl22 mpfr4 mpc1 gcc musl-dev libc-dev g++ perl-error perl-git git-perl make re2c
    (1/22) Installing m4 (1.4.18-r2)
    (2/22) Installing perl (5.32.0-r0)
    (3/22) Installing autoconf (2.69-r3)
    (4/22) Installing binutils (2.35.2-r1)
    (5/22) Installing dpkg (1.20.6-r0)
    (6/22) Installing dpkg-dev (1.20.6-r0)
    (7/22) Installing libmagic (5.39-r0)
    (8/22) Installing file (5.39-r0)
    (9/22) Installing libatomic (10.2.1_pre1-r3)
    (10/22) Installing libgphobos (10.2.1_pre1-r3)
    (11/22) Installing isl22 (0.22-r0)
    (12/22) Installing mpfr4 (4.1.0-r0)
    (13/22) Installing mpc1 (1.2.0-r0)
    (14/22) Installing gcc (10.2.1_pre1-r3)
    (15/22) Installing musl-dev (1.2.2-r1)
    (16/22) Installing libc-dev (0.7.2-r3)
    (17/22) Installing g++ (10.2.1_pre1-r3)
    (18/22) Installing perl-error (0.17029-r1)
    (19/22) Installing perl-git (2.30.2-r0)
    (20/22) Installing git-perl (2.30.2-r0)
    (21/22) Installing make (4.3-r0)
    (22/22) Installing re2c (1.3-r1)
    Executing busybox-1.32.1-r6.trigger
    OK: 822 MiB in 195 packages
    Upgrading critical system libraries and apk-tools:
    (1/1) Upgrading apk-tools (2.12.5-r0 -> 2.12.7-r0)
    Executing busybox-1.32.1-r6.trigger
    Continuing the upgrade transaction with new apk-tools:
    (1/10) Upgrading libxml2 (2.9.10-r7 -> 2.9.12-r0)
    (2/10) Upgrading libcurl (7.77.0-r1 -> 7.78.0-r0)
    (3/10) Upgrading curl (7.76.1-r0 -> 7.78.0-r0)
    (4/10) Upgrading avahi-libs (0.8-r3 -> 0.8-r4)
    (5/10) Upgrading musl-utils (1.2.2-r0 -> 1.2.2-r1)
    (6/10) Upgrading libxml2-dev (2.9.10-r7 -> 2.9.12-r0)
    (7/10) Upgrading mariadb-common (10.5.11-r0 -> 10.5.12-r0)
    Executing mariadb-common-10.5.12-r0.post-upgrade
    (8/10) Upgrading mariadb-client (10.5.11-r0 -> 10.5.12-r0)
    (9/10) Upgrading npm (14.16.1-r1 -> 14.17.4-r0)
    (10/10) Upgrading rsync (3.2.3-r1 -> 3.2.3-r4)
    Executing busybox-1.32.1-r6.trigger
    OK: 822 MiB in 195 packages
    ### INSTALLING BUNDLED MODULE intl ###
    
    opened by tobybellwood 1
Releases(1.4.12)
Owner
Michele Locati
Having fun with coding since 1988
Michele Locati
Docker-magento2 - 🐳 Docker containers with all required Magento 2 dependencies installed available as FPM through Nginx and CLI

Magento 2 Docker A collection of Docker images for running Magento 2 through nginx and on the command line. Quick Start cp composer.env.sample compose

Meanbee 447 Jan 13, 2022
YCOM Impersonate. Login as selected YCOM user 🧙‍♂️in frontend.

YCOM Impersonate Login as selected YCOM user in frontend. Features: Backend users with admin rights or YCOM[] rights, can be automatically logged in v

Friends Of REDAXO 7 Jan 11, 2022
A Magento Development Environment Made of Docker Containers

Docker for Magento 1 Extension Development Tl;dr How do I use this? Clone it. Type docker-compose up -d. Install a Magento Mount your file share. Deve

Michael A. Smith 99 May 10, 2021
OSX/Linux Docker containers installer for Magento 2

Magento 2 OSX/Linux Docker Requirements MacOS: Docker, docker-sync, Git Linux: Docker, Docker-compose, Git on Debian based OS (Example: Ubuntu, Linux

Osiozekhai Aliu 50 Jan 9, 2022
Docker-magento - Docker image for Magento 1.6 to 1.9

Docker image for Magento 1.x This repo creates a Docker image for Magento 1.x. Please note The primary goal of this repo is to create Docker images fo

Fu Cheng 142 Dec 17, 2021
Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

Nuber is an open source container management platform it provides a front end to manage your own cloud infrastructure, using Linux Containers virtualization technology

null 26 Dec 6, 2021
Magento 2 Extension to cleanup admin menu and Store > Configuration area by arranging third party extension items.

Clean Admin Menu - Magento 2 Extension It will merge all 3rd party extension's menu items in backend's primary menu to a common menu item named "Exten

RedChamps 93 Dec 22, 2021
Magento 2 Blog Extension is a better blog extension for Magento 2 platform. These include all useful features of Wordpress CMS

Magento 2 Blog extension FREE Magento 2 Better Blog by Mageplaza is integrated right into the Magento backend so you can manage your blog and your e-c

Mageplaza 104 Dec 28, 2021
Phalcon 3.x BB Debugger Strong and easy install.

Phalcon BB Debugger Phalcon Version: 3.x BB Debugger Version: 1.0.3 Change Log See ChangeLog What is BB Debugger ? The bb debugger, written for the ph

İsmail 5 Jun 29, 2019
Automatically load the next page of products in Magento. Easy to install and configure, this module works 100% out of the box with vanilla Magento 1.9.x and earlier.

Automatically load the next page of products in Magento. Easy to install and configure, this module works 100% out of the box with vanilla Magento 1.9.x and earlier.

Strategery 123 Nov 20, 2021
Magento 2 Bash Install/Restore Script

Magento 2 Bash Install/Restore Script This script is designed to simplify the installation process of Magento 2 and rapid deployment of merchant code

Yarik Voronoy 78 Jan 1, 2022
An installer package that let's you install NodeJS and NPM as a Composer dependency.

NodeJS installer for Composer This is an installer that will download NodeJS and NPM and install them in your Composer dependencies. Installation is s

TheCodingMachine 104 Dec 10, 2021
A composer plugin, to install differenty types of composer packages in custom directories outside the default composer default installation path which is in the vendor folder.

composer-custom-directory-installer A composer plugin, to install differenty types of composer packages in custom directories outside the default comp

Mina Nabil Sami 125 Jan 5, 2022
Php-gamer - A repo with PHP 8.1, Swoole and Laminas. And of course, Docker in the front.

PHP-Gamer Instructions for run this app: First time $ git clone [email protected]:fatorx/php-gamer.git $ cd php-gamer $ chmod +x docker-build.sh $ chmod

Fabio de Souza 7 Dec 29, 2021
Full PHP development environment for Docker.

Full PHP development environment based on Docker. Use Docker First - Learn About It Later! Join Us Awesome People Laradock is an MIT-licensed open sou

laradock 11.1k Jan 17, 2022
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 8 | Aws ECS, Google Kubernates, Azure Container Engine

Docker infrastructure for Lumen Description Microservice Lumen is a starting skeleton based on Docker and Lumen Framework. This project helps to devel

Fabrizio Cafolla 191 Jan 10, 2022
Docker image that provides static analysis tools for PHP

Static Analysis Tools for PHP Docker image providing static analysis tools for PHP. The list of available tools and the installer are actually managed

Jakub Zalas 973 Jan 8, 2022