├── .dockerignore ├── .gitignore ├── 5.3 ├── Dockerfile └── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf ├── 5.4 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 5.5 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 5.6 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 7.0 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 7.1 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 7.2 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── 7.3 ├── Dockerfile ├── configs │ ├── php-fpm.conf │ ├── php.ini │ └── www.conf └── full │ ├── Dockerfile │ └── xdebug.ini ├── LICENSE ├── README.md └── test.sh /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | .gitignore 3 | LICENSE 4 | README.md -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | -------------------------------------------------------------------------------- /5.3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:precise 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php5 \ 14 | PHP_DATA_DIR=/var/lib/php5 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && apt-get update \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | # Note: PHP 5.3.29 Trusty ppa:hentenaar/php 22 | && add-apt-repository ppa:rip84/php5 \ 23 | && apt-get update \ 24 | # Install PHP libraries 25 | && apt-get install -y curl php5-fpm php5-cli php-apc php5-intl php5-json php5-curl php5-mcrypt php5-gd php5-pgsql php5-mysql php-pear \ 26 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/cli/conf.d/apc.ini \ 27 | # Install composer 28 | && curl -sS https://getcomposer.org/installer | php -- --version=1.4.3 --install-dir=/usr/local/bin --filename=composer \ 29 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 30 | # Cleaning 31 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 32 | && apt-get autoremove -y && apt-get clean \ 33 | && rm -rf /var/lib/apt/lists/* 34 | 35 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 36 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 37 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 38 | 39 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 41 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 42 | 43 | WORKDIR /var/www 44 | 45 | EXPOSE 9000 46 | 47 | # PHP_DATA_DIR store sessions 48 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 49 | CMD ["/usr/sbin/php5-fpm"] -------------------------------------------------------------------------------- /5.3/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php5-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php5/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /5.3/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /5.3/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php5-fpm.sock - to listen on a unix socket. 6 | listen = 9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | ; Ensure worker stdout and stderr are sent to the main error log. 23 | catch_workers_output = yes -------------------------------------------------------------------------------- /5.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:precise 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php5 \ 14 | PHP_DATA_DIR=/var/lib/php5 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && apt-get update \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:jukito-gmail/php5.4 \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | && apt-get install -y curl php5-fpm php5-cli php-apc php5-intl php5-json php5-curl php5-mcrypt php5-gd php5-pgsql php5-mysql php-pear \ 25 | && php5enmod mcrypt \ 26 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apc.ini \ 27 | # Install composer 28 | && curl -sS https://getcomposer.org/installer | php -- --version=1.6.5 --install-dir=/usr/local/bin --filename=composer \ 29 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 30 | # Cleaning 31 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 32 | && apt-get autoremove -y && apt-get clean \ 33 | && rm -rf /var/lib/apt/lists/* 34 | 35 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 36 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 37 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 38 | 39 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 41 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 42 | 43 | WORKDIR /var/www 44 | 45 | EXPOSE 9000 46 | 47 | # PHP_DATA_DIR store sessions 48 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 49 | CMD ["/usr/sbin/php5-fpm"] -------------------------------------------------------------------------------- /5.4/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php5-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php5/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /5.4/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /5.4/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php5-fpm.sock - to listen on a unix socket. 6 | listen = 9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /5.4/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:5.4 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php5/ 5 | 6 | RUN \ 7 | BUILD_DEPS='php5-dev wget make libtool locate pkg-config' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} \ 10 | && echo "deb http://packages.couchbase.com/ubuntu precise precise/main" | tee -a /etc/apt/sources.list.d/couchbase.list \ 11 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 12 | && apt-get update \ 13 | && apt-get install -y libcouchbase2-libevent libcouchbase-dev libsasl2-dev libmemcached-dev php5-memcache \ 14 | && pecl channel-update pecl.php.net \ 15 | # Install xdebug 16 | && echo -e "\nInstall xdebug extension\n" \ 17 | && pecl install -f xdebug-2.4.0 \ 18 | && PATH_XDEBUG=$(updatedb && locate xdebug.so) \ 19 | && echo "zend_extension = ${PATH_XDEBUG}" >> ${PHP_CONF_DIR}/fpm/conf.d/xdebug.ini \ 20 | # Install memcached 21 | && echo -e "\nInstall memcached extension\n" \ 22 | && printf "no --disable-memcached-sasl" | pecl install memcached \ 23 | && echo "extension = memcached.so" > ${PHP_CONF_DIR}/fpm/conf.d/memcached.ini \ 24 | # Install mongo 25 | && echo "\nInstall mongo extension\n" \ 26 | && printf "\n" | pecl install -f mongo \ 27 | && echo "extension = mongo.so" > ${PHP_CONF_DIR}/fpm/conf.d/mongo.ini \ 28 | && echo "extension = mongo.so" > ${PHP_CONF_DIR}/cli/conf.d/mongo.ini \ 29 | # Install redis 30 | && echo "\nInstall redis extension\n" \ 31 | && printf "\n" | pecl install -f redis-2.2.8 \ 32 | && echo "extension = redis.so" > ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 33 | && echo "extension = redis.so" > ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 34 | # Install couchbase 35 | && echo "\nInstall couchbase extension\n" \ 36 | && apt-get install -y re2c \ 37 | && pecl install -f pcs \ 38 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 39 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 40 | && pecl install -f couchbase-2.2.3 \ 41 | && echo "extension = couchbase.so" > ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 42 | && echo "extension = couchbase.so" > ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 43 | && composer global require "phpunit/phpunit:^4.7.0" \ 44 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 45 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 46 | # Cleaning 47 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 48 | && apt-get autoremove -y && apt-get clean \ 49 | && rm -rf /var/lib/apt/lists/* 50 | 51 | ENV PATH /root/.composer/vendor/bin:$PATH 52 | 53 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 54 | 55 | -------------------------------------------------------------------------------- /5.4/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /5.5/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/5.5 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | && apt-get install -y curl php5.5-fpm php5.5-cli php5.5-intl php5.5-zip php5.5-mbstring php5.5-xml php5.5-json php5.5-curl php5.5-mcrypt php5.5-gd php5.5-pgsql php5.5-mysql php-pear \ 25 | && phpenmod mcrypt \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.6.5 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm5.5"] -------------------------------------------------------------------------------- /5.5/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php5.5-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/5.5/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /5.5/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /5.5/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php5.5-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /5.5/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:5.5 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/5.5 5 | 6 | RUN \ 7 | BUILD_DEPS='php5.5-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} \ 10 | && echo "deb http://packages.couchbase.com/ubuntu trusty trusty/main" | tee -a /etc/apt/sources.list.d/couchbase.list \ 11 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 12 | && apt-get update \ 13 | && apt-get install -y libcouchbase2-libevent libcouchbase-dev php-xdebug php-redis php-memcache php-memcached php-mongo php5.5-bcmath \ 14 | && pecl channel-update pecl.php.net \ 15 | # Install couchbase 16 | && echo "\nInstall couchbase extension\n" \ 17 | && apt-get install -y re2c \ 18 | && pecl install -f pcs \ 19 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 20 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 21 | && pecl install -f couchbase-2.2.3 \ 22 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 23 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 24 | # Install APC 25 | && printf "\n" | pecl install -f apcu-4.0.11 \ 26 | && echo "extension = apcu.so" >> ${PHP_CONF_DIR}/fpm/conf.d/apcu.ini \ 27 | && echo "extension = apcu.so\napc.enable_cli=1" >> ${PHP_CONF_DIR}/cli/conf.d/apcu.ini \ 28 | && composer global require "phpunit/phpunit:^4.7.0" \ 29 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 30 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 31 | # Cleaning 32 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 33 | && apt-get autoremove -y && apt-get clean \ 34 | && rm -rf /var/lib/apt/lists/* 35 | 36 | ENV PATH /root/.composer/vendor/bin:$PATH 37 | 38 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 39 | 40 | -------------------------------------------------------------------------------- /5.5/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /5.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/5.6 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | && apt-get install -y curl php5.6-fpm php5.6-cli php5.6-readline php5.6-mbstring php5.6-zip php5.6-intl php5.6-xml php5.6-json php5.6-curl php5.6-mcrypt php5.6-gd php5.6-pgsql php5.6-mysql php-pear \ 25 | && phpenmod mcrypt \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.6.5 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm5.6"] -------------------------------------------------------------------------------- /5.6/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php5.6-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/5.6/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /5.6/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /5.6/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php5.6-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /5.6/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:5.6 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/5.6 5 | 6 | RUN \ 7 | BUILD_DEPS='php5.6-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} php-xdebug php-memcache php-memcached php-mongo php5.6-bcmath \ 10 | && pecl channel-update pecl.php.net \ 11 | 12 | # Install couchbase 13 | && echo "\nInstall couchbase extension\n" \ 14 | && echo "deb http://packages.couchbase.com/ubuntu xenial xenial/main" | tee -a /etc/apt/sources.list.d/couchbase.list \ 15 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 16 | && apt-get update \ 17 | && apt-get install -y zlib1g-dev libcouchbase2-libevent libcouchbase-dev re2c \ 18 | && pecl install -f pcs \ 19 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/mods-available/pcs.ini \ 20 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 21 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 22 | && pecl install -f couchbase-2.4.6 \ 23 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/mods-available/couchbase.ini \ 24 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 25 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 26 | 27 | # Install Redis 28 | && echo "\nInstall redis extension\n" \ 29 | && printf "\n" | pecl install -f redis-4.0.2 \ 30 | && echo "extension = redis.so" >> ${PHP_CONF_DIR}/mods-available/redis.ini \ 31 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 32 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 33 | 34 | # Install APC 35 | && echo "\nInstall APC extension\n" \ 36 | && printf "\n" | pecl install -f apcu-4.0.11 \ 37 | && echo "extension = apcu.so\napc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apcu.ini \ 38 | && ln -s ${PHP_CONF_DIR}/mods-available/apcu.ini ${PHP_CONF_DIR}/fpm/conf.d/apcu.ini \ 39 | && ln -s ${PHP_CONF_DIR}/mods-available/apcu.ini ${PHP_CONF_DIR}/cli/conf.d/apcu.ini \ 40 | 41 | # Install PHPUnit 42 | && echo "\nInstall PHPUnit\n" \ 43 | && composer global require "phpunit/phpunit:^5.0.0" \ 44 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 45 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 46 | 47 | # Cleaning 48 | && echo "\nCleaning\n" \ 49 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 50 | && apt-get autoremove -y && apt-get clean \ 51 | && rm -rf /var/lib/apt/lists/* 52 | 53 | ENV PATH /root/.composer/vendor/bin:$PATH 54 | 55 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 56 | 57 | -------------------------------------------------------------------------------- /5.6/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /7.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/7.0 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | && apt-get install -y curl php7.0-fpm php7.0-cli php7.0-readline php7.0-mbstring php7.0-zip php7.0-intl php7.0-json php7.0-xml php7.0-curl php7.0-mcrypt php7.0-gd php7.0-pgsql php7.0-mysql php-pear \ 25 | && phpenmod mcrypt \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.8.4 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm7.0"] -------------------------------------------------------------------------------- /7.0/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php7.0-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/7.0/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /7.0/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /7.0/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php7.0-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /7.0/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:7.0 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/7.0 5 | 6 | RUN \ 7 | BUILD_DEPS='php7.0-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} php-xdebug php-apcu php-memcache php-memcached php-mongodb php7.0-bcmath \ 10 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apcu.ini \ 11 | && pecl channel-update pecl.php.net \ 12 | 13 | # Install couchbase 14 | && echo "\nInstall couchbase extension\n" \ 15 | && echo "deb http://packages.couchbase.com/ubuntu xenial xenial/main" | tee -a /etc/apt/sources.list.d/couchbase.list \ 16 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 17 | && apt-get update \ 18 | && apt-get install -y zlib1g-dev libcouchbase2-libevent libcouchbase-dev re2c \ 19 | && pecl install -f pcs \ 20 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/mods-available/pcs.ini \ 21 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 22 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 23 | && pecl install -f couchbase-2.4.6 \ 24 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/mods-available/couchbase.ini \ 25 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 26 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 27 | 28 | # Install Redis 29 | && echo "\nInstall redis extension\n" \ 30 | && printf "\n" | pecl install -f redis-4.0.2 \ 31 | && echo "extension = redis.so" >> ${PHP_CONF_DIR}/mods-available/redis.ini \ 32 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 33 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 34 | 35 | # Install PHPUnit 36 | && echo "\nInstall PHPUnit\n" \ 37 | && composer global require "phpunit/phpunit:^5.0.0" \ 38 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 39 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 40 | 41 | # Cleaning 42 | && echo "\nCleaning\n" \ 43 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 44 | && apt-get autoremove -y && apt-get clean \ 45 | && rm -rf /var/lib/apt/lists/* 46 | 47 | ENV PATH /root/.composer/vendor/bin:$PATH 48 | 49 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 50 | 51 | -------------------------------------------------------------------------------- /7.0/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /7.1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/7.1 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common python-software-properties' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | && apt-get install -y curl php7.1-fpm php7.1-cli php7.1-readline php7.1-mbstring php7.1-zip php7.1-intl php7.1-json php7.1-xml php7.1-curl php7.1-mcrypt php7.1-gd php7.1-pgsql php7.1-mysql php-pear \ 25 | && phpenmod mcrypt \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.8.4 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm7.1"] -------------------------------------------------------------------------------- /7.1/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php7.1-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/7.1/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /7.1/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /7.1/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php7.1-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /7.1/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:7.1 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/7.1 5 | 6 | RUN \ 7 | BUILD_DEPS='php7.1-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} php-xdebug php-apcu php-memcache php-memcached php-mongodb php7.1-bcmath \ 10 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apcu.ini \ 11 | && pecl channel-update pecl.php.net \ 12 | 13 | # # Install Memcached 14 | # && echo "\nInstall memcached extension\n" \ 15 | # && apt-get install -y zlib1g-dev php-igbinary pkg-config libmemcached-dev \ 16 | # && printf "\n" | pecl install -f memcached-3.0.4 \ 17 | # && echo "extension = memcached.so" >> ${PHP_CONF_DIR}/mods-available/memcached.ini \ 18 | # && ln -s ${PHP_CONF_DIR}/mods-available/memcached.ini ${PHP_CONF_DIR}/fpm/conf.d/memcached.ini \ 19 | # && ln -s ${PHP_CONF_DIR}/mods-available/memcached.ini ${PHP_CONF_DIR}/cli/conf.d/memcached.ini \ 20 | 21 | # Install couchbase 22 | && echo "\nInstall couchbase extension\n" \ 23 | && echo "deb http://packages.couchbase.com/ubuntu xenial xenial/main" | tee -a /etc/apt/sources.list.d/couchbase.list \ 24 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 25 | && apt-get update \ 26 | && apt-get install -y zlib1g-dev libcouchbase2-libevent libcouchbase-dev re2c \ 27 | && pecl install -f pcs \ 28 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/mods-available/pcs.ini \ 29 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 30 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 31 | && pecl install -f couchbase-2.6.0 \ 32 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/mods-available/couchbase.ini \ 33 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 34 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 35 | 36 | # Install Redis 37 | && echo "\nInstall redis extension\n" \ 38 | && printf "\n" | pecl install -f redis-4.2.0 \ 39 | && echo "extension = redis.so" >> ${PHP_CONF_DIR}/mods-available/redis.ini \ 40 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 41 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 42 | 43 | # Install PHPUnit 44 | && echo "\nInstall PHPUnit\n" \ 45 | && composer global require "phpunit/phpunit:^5.0.0" \ 46 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 47 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 48 | 49 | # Cleaning 50 | && echo "\nCleaning\n" \ 51 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 52 | && apt-get autoremove -y && apt-get clean \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ENV PATH /root/.composer/vendor/bin:$PATH 56 | 57 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 58 | 59 | -------------------------------------------------------------------------------- /7.1/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /7.2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/7.2 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | # php7.2-mcrypt not support and move to PECL. Use extension Sodium: http://php.net/manual/book.sodium.php 25 | && apt-get install -y curl php7.2-fpm php7.2-cli php7.2-readline php7.2-mbstring php7.2-zip php7.2-intl php7.2-json php7.2-xml php7.2-curl php7.2-gd php7.2-pgsql php7.2-mysql php-pear \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.8.4 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm7.2"] -------------------------------------------------------------------------------- /7.2/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php7.2-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/7.2/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /7.2/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /7.2/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php7.2-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /7.2/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:7.2 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/7.2 5 | 6 | RUN \ 7 | BUILD_DEPS='php7.2-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} php-xdebug php-apcu php-memcache php-memcached php-mongodb php7.2-bcmath \ 10 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apcu.ini \ 11 | && pecl channel-update pecl.php.net \ 12 | 13 | # Install couchbase 14 | && echo "\nInstall couchbase extension\n" \ 15 | && echo "deb http://packages.couchbase.com/ubuntu bionic bionic/main" | tee /etc/apt/sources.list.d/couchbase.list \ 16 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 17 | && apt-get update \ 18 | && apt-get install -y zlib1g-dev libcouchbase2-libevent libcouchbase-dev re2c \ 19 | && pecl install -f pcs \ 20 | && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/mods-available/pcs.ini \ 21 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 22 | && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 23 | && pecl install -f couchbase-2.6.0 \ 24 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/mods-available/couchbase.ini \ 25 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 26 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 27 | 28 | # Install Redis 29 | && echo "\nInstall redis extension\n" \ 30 | && printf "\n" | pecl install -f redis-4.2.0 \ 31 | && echo "extension = redis.so" >> ${PHP_CONF_DIR}/mods-available/redis.ini \ 32 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 33 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 34 | 35 | # Install PHPUnit 36 | && echo "\nInstall PHPUnit\n" \ 37 | && composer global require "phpunit/phpunit:^7.0.0" \ 38 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 39 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 40 | 41 | # Cleaning 42 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 43 | && apt-get autoremove -y && apt-get clean \ 44 | && rm -rf /var/lib/apt/lists/* 45 | 46 | ENV PATH /root/.composer/vendor/bin:$PATH 47 | 48 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 49 | 50 | -------------------------------------------------------------------------------- /7.2/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /7.3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | MAINTAINER romeOz 3 | 4 | ENV OS_LOCALE="en_US.UTF-8" \ 5 | DEBIAN_FRONTEND=noninteractive 6 | RUN apt-get update && apt-get install -y locales && locale-gen ${OS_LOCALE} 7 | ENV LANG=${OS_LOCALE} \ 8 | LANGUAGE=${OS_LOCALE} \ 9 | LC_ALL=${OS_LOCALE} 10 | 11 | ENV PHP_RUN_DIR=/run/php \ 12 | PHP_LOG_DIR=/var/log/php \ 13 | PHP_CONF_DIR=/etc/php/7.3 \ 14 | PHP_DATA_DIR=/var/lib/php 15 | 16 | RUN \ 17 | BUILD_DEPS='software-properties-common' \ 18 | && dpkg-reconfigure locales \ 19 | # Install common libraries 20 | && apt-get install --no-install-recommends -y $BUILD_DEPS \ 21 | && add-apt-repository -y ppa:ondrej/php \ 22 | && apt-get update \ 23 | # Install PHP libraries 24 | # php7.3-mcrypt not support and move to PECL. Use extension Sodium: http://php.net/manual/book.sodium.php 25 | && apt-get install -y curl php7.3-fpm php7.3-cli php7.3-readline php7.3-mbstring php7.3-zip php7.3-intl php7.3-json php7.3-xml php7.3-curl php7.3-gd php7.3-pgsql php7.3-mysql php-pear \ 26 | # Install composer 27 | && curl -sS https://getcomposer.org/installer | php -- --version=1.8.4 --install-dir=/usr/local/bin --filename=composer \ 28 | && mkdir -p ${PHP_LOG_DIR} ${PHP_RUN_DIR} \ 29 | # Cleaning 30 | && apt-get purge -y --auto-remove $BUILD_DEPS \ 31 | && apt-get autoremove -y && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | COPY ./configs/php-fpm.conf ${PHP_CONF_DIR}/fpm/php-fpm.conf 35 | COPY ./configs/www.conf ${PHP_CONF_DIR}/fpm/pool.d/www.conf 36 | COPY ./configs/php.ini ${PHP_CONF_DIR}/fpm/conf.d/custom.ini 37 | 38 | RUN sed -i "s~PHP_RUN_DIR~${PHP_RUN_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 39 | && sed -i "s~PHP_LOG_DIR~${PHP_LOG_DIR}~g" ${PHP_CONF_DIR}/fpm/php-fpm.conf \ 40 | && chown www-data:www-data ${PHP_DATA_DIR} -Rf 41 | 42 | WORKDIR /var/www 43 | 44 | EXPOSE 9000 45 | 46 | # PHP_DATA_DIR store sessions 47 | VOLUME ["${PHP_RUN_DIR}", "${PHP_DATA_DIR}"] 48 | CMD ["/usr/sbin/php-fpm7.3"] -------------------------------------------------------------------------------- /7.3/configs/php-fpm.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | daemonize = no 3 | pid = PHP_RUN_DIR/php7.3-fpm.pid 4 | 5 | ; Log level 6 | ; Possible Values: alert, error, warning, notice, debug 7 | ; Default Value: notice 8 | log_level = notice 9 | 10 | ; Error log file 11 | ; If it's set to "syslog", log is sent to syslogd instead of being written 12 | ; in a local file. 13 | ; Note: the default prefix is /var 14 | ; Default Value: log/php-fpm.log 15 | error_log = /proc/self/fd/2 16 | 17 | include=/etc/php/7.3/fpm/pool.d/*.conf 18 | 19 | -------------------------------------------------------------------------------- /7.3/configs/php.ini: -------------------------------------------------------------------------------- 1 | cgi.fix_pathinfo = 0; 2 | ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 3 | ; Development Value: E_ALL 4 | ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT 5 | error_reporting = E_ALL 6 | 7 | ; Default Value: On 8 | ; Development Value: On 9 | ; Production Value: Off 10 | display_errors = On 11 | 12 | variables_order = "EGPCS" 13 | default_charset = "UTF-8" 14 | 15 | post_max_size = 25M 16 | upload_max_filesize = 20M -------------------------------------------------------------------------------- /7.3/configs/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = www-data 3 | group = www-data 4 | 5 | ;/var/run/php/php7.3-fpm.sock - to listen on a unix socket. 6 | listen = [::]:9000 7 | 8 | ; Set permissions for unix socket, if one is used. Default Values: user and group are set as the running user 9 | ;listen.owner = www-data 10 | ;listen.group = www-data 11 | ;listen.mode = 0666 12 | 13 | ; if we send this to /proc/self/fd/1, it never appears 14 | ;access.log = /proc/self/fd/2 15 | 16 | pm = dynamic 17 | pm.max_children = 5 18 | pm.start_servers = 2 19 | pm.min_spare_servers = 1 20 | pm.max_spare_servers = 3 21 | 22 | clear_env = no 23 | 24 | ; Ensure worker stdout and stderr are sent to the main error log. 25 | catch_workers_output = yes -------------------------------------------------------------------------------- /7.3/full/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM romeoz/docker-phpfpm:7.3 2 | MAINTAINER romeOz 3 | 4 | ENV PHP_CONF_DIR=/etc/php/7.3 5 | 6 | RUN \ 7 | BUILD_DEPS='php7.3-dev wget' \ 8 | && apt-get update \ 9 | && apt-get install -y ${BUILD_DEPS} php-xdebug php-apcu php-memcache php-memcached php-mongodb php7.3-bcmath \ 10 | && echo "apc.enable_cli=1" >> ${PHP_CONF_DIR}/mods-available/apcu.ini \ 11 | && pecl channel-update pecl.php.net \ 12 | 13 | # Install couchbase 14 | && echo "\nInstall couchbase extension\n" \ 15 | && echo "deb http://packages.couchbase.com/ubuntu bionic bionic/main" | tee /etc/apt/sources.list.d/couchbase.list \ 16 | && wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | apt-key add - \ 17 | && apt-get update \ 18 | && apt-get install -y zlib1g-dev libcouchbase2-libevent libcouchbase-dev re2c \ 19 | # && pecl install -f pcs \ 20 | # && echo "extension = pcs.so" >> ${PHP_CONF_DIR}/mods-available/pcs.ini \ 21 | # && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/fpm/conf.d/pcs.ini \ 22 | # && ln -s ${PHP_CONF_DIR}/mods-available/pcs.ini ${PHP_CONF_DIR}/cli/conf.d/pcs.ini \ 23 | && pecl install -f couchbase-2.6.0 \ 24 | && echo "extension = couchbase.so" >> ${PHP_CONF_DIR}/mods-available/couchbase.ini \ 25 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/fpm/conf.d/couchbase.ini \ 26 | && ln -s ${PHP_CONF_DIR}/mods-available/couchbase.ini ${PHP_CONF_DIR}/cli/conf.d/couchbase.ini \ 27 | 28 | # Install Redis 29 | && echo "\nInstall redis extension\n" \ 30 | && printf "\n" | pecl install -f redis-4.2.0 \ 31 | && echo "extension = redis.so" >> ${PHP_CONF_DIR}/mods-available/redis.ini \ 32 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/fpm/conf.d/redis.ini \ 33 | && ln -s ${PHP_CONF_DIR}/mods-available/redis.ini ${PHP_CONF_DIR}/cli/conf.d/redis.ini \ 34 | 35 | # Install PHPUnit 36 | && echo "\nInstall PHPUnit\n" \ 37 | && composer global require "phpunit/phpunit:^8.0.0" \ 38 | && echo -e '\ninclude_path = ".:/usr/share/php:/root/.composer/vendor/phpunit"' >> ${PHP_CONF_DIR}/cli/conf.d/custom.ini \ 39 | && ln -s /root/.composer/vendor/bin/phpunit /usr/bin/phpunit \ 40 | 41 | # Cleaning 42 | && apt-get purge -y --auto-remove ${BUILD_DEPS} \ 43 | && apt-get autoremove -y && apt-get clean \ 44 | && rm -rf /var/lib/apt/lists/* 45 | 46 | ENV PATH /root/.composer/vendor/bin:$PATH 47 | 48 | COPY xdebug.ini ${PHP_CONF_DIR}/mods-available/xdebug.ini 49 | 50 | -------------------------------------------------------------------------------- /7.3/full/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | 3 | xdebug.default_enable=1 4 | ;xdebug.remote_enable=1 5 | ;xdebug.remote_handler=dbgp 6 | ; This is the default Docker gateway 7 | ;xdebug.remote_host=172.17.0.1 8 | ;xdebug.remote_port=9000 9 | xdebug.remote_autostart=1 10 | xdebug.remote_connect_back=1 11 | 12 | ; display config 13 | xdebug.cli_color=1 14 | xdebug.var_display_max_depth=10 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 RomeOz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Docker Pulls](https://img.shields.io/docker/pulls/romeoz/docker-phpfpm.svg)](https://hub.docker.com/r/romeoz/docker-phpfpm/) 2 | 3 | Table of Contents 4 | ------------------- 5 | 6 | * [Installation](#installation) 7 | * [Quick Start](#quick-start) 8 | * [Adding PHP-extension](#adding-php-extension) 9 | * [Logging](#logging) 10 | * [Out of the box](#out-of-the-box) 11 | 12 | Installation 13 | ------------------- 14 | 15 | * [Install Docker](https://docs.docker.com/installation/) or [askubuntu](http://askubuntu.com/a/473720) 16 | * Pull the latest version of the image. 17 | 18 | ```bash 19 | docker pull romeoz/docker-phpfpm 20 | ``` 21 | 22 | or other versions (7.3, 7.2, 7.1, 7.0, 5.6, 5.5, 5.4 or 5.3): 23 | 24 | ```bash 25 | docker pull romeoz/docker-phpfpm:7.1 26 | ``` 27 | 28 | Alternately you can build the image yourself. 29 | 30 | ```bash 31 | git clone https://github.com/romeoz/docker-phpfpm.git 32 | cd docker-phpfpm 33 | docker build -t="$USER/docker-phpfpm" . 34 | ``` 35 | 36 | Quick Start 37 | ------------------- 38 | 39 | Run the application container: 40 | 41 | ```bash 42 | docker run --name app -d -p 9000:9000 romeoz/docker-phpfpm 43 | ``` 44 | 45 | The simplest way to login to the app container is to use the `docker exec` command to attach a new process to the running container. 46 | 47 | ```bash 48 | docker exec -it app bash 49 | ``` 50 | 51 | Adding PHP-extension 52 | ------------------- 53 | 54 | You can use one of two choices to install the required php-extensions: 55 | 56 | 1. `docker exec -it app bash -c 'apt-get update && apt-get install php-mongo && rm -rf /var/lib/apt/lists/*'` 57 | 58 | 2. Create your container on based the current. Сontents Dockerfile: 59 | 60 | ``` 61 | FROM romeoz/docker-phpfpm:5.6 62 | 63 | RUN apt-get update \ 64 | && apt-get install -y php-mongo \ 65 | && rm -rf /var/lib/apt/lists/* 66 | 67 | WORKDIR /var/www/app/ 68 | 69 | EXPOSE 9000 70 | 71 | CMD ["/usr/sbin/php-fpm5.6"] 72 | ``` 73 | 74 | Next step, 75 | 76 | ```bash 77 | docker build -t php-5.6 . 78 | docker run --name app -d -p 9090:9000 php-5.6 79 | ``` 80 | 81 | >See installed php-extension: `docker exec -it app php -m` 82 | 83 | >PHP-extension "Mcrypt" was REMOVED in PHP 7.2. Use [Sodium](http://php.net/manual/en/book.sodium.php) or [OpenSSL](http://php.net/manual/en/book.openssl.php) 84 | 85 | Logging 86 | ------------------- 87 | 88 | All the logs are forwarded to stdout and sterr. You have use the command `docker logs`. 89 | 90 | ```bash 91 | docker logs app 92 | ``` 93 | 94 | ####Split the logs 95 | 96 | You can then simply split the stdout & stderr of the container by piping the separate streams and send them to files: 97 | 98 | ```bash 99 | docker logs app > stdout.log 2>stderr.log 100 | cat stdout.log 101 | cat stderr.log 102 | ``` 103 | 104 | or split stdout and error to host stdout: 105 | 106 | ```bash 107 | docker logs app > - 108 | docker logs app 2> - 109 | ``` 110 | 111 | ####Rotate logs 112 | 113 | Create the file `/etc/logrotate.d/docker-containers` with the following text inside: 114 | 115 | ``` 116 | /var/lib/docker/containers/*/*.log { 117 | rotate 31 118 | daily 119 | nocompress 120 | missingok 121 | notifempty 122 | copytruncate 123 | } 124 | ``` 125 | > Optionally, you can replace `nocompress` to `compress` and change the number of days. 126 | 127 | Out of the box 128 | ------------------- 129 | * Ubuntu 12.04, 14.04, 16.04 or 18.04 LTS 130 | * PHP 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 or 7.3 131 | * Composer (package manager) 132 | 133 | >Environment depends on the version of PHP. 134 | 135 | License 136 | ------------------- 137 | 138 | PHP-FPM docker image is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | echo "-- Building PHP 7.3 image" 6 | docker build -t php-7.3 7.3/ 7 | 8 | echo 9 | echo "-- Testing server is running" 10 | docker run --name app -d php-7.3; sleep 5 11 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 12 | docker exec -it app bash -c "php -v | grep -c 'PHP 7.3'" 13 | 14 | echo 15 | echo "-- Clear" 16 | docker rm -f -v app; sleep 5 17 | docker rmi -f php-7.3 18 | 19 | 20 | echo "-- Building PHP 7.2 image" 21 | docker build -t php-7.2 7.2/ 22 | 23 | echo 24 | echo "-- Testing server is running" 25 | docker run --name app -d php-7.2; sleep 5 26 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 27 | docker exec -it app bash -c "php -v | grep -c 'PHP 7.2'" 28 | 29 | echo 30 | echo "-- Clear" 31 | docker rm -f -v app; sleep 5 32 | docker rmi -f php-7.2 33 | 34 | 35 | echo 36 | echo 37 | echo "-- Building PHP 7.1 image" 38 | docker build -t php-7.1 7.1/ 39 | 40 | echo 41 | echo "-- Testing server is running" 42 | docker run --name app -d php-7.1; sleep 5 43 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 44 | docker exec -it app bash -c "php -v | grep -c 'PHP 7.1'" 45 | 46 | echo 47 | echo "-- Clear" 48 | docker rm -f -v app; sleep 5 49 | docker rmi -f php-7.1 50 | 51 | 52 | echo 53 | echo 54 | echo "-- Building PHP 7.0 image" 55 | docker build -t php-7.0 7.0/ 56 | 57 | echo 58 | echo "-- Testing server is running" 59 | docker run --name app -d php-7.0; sleep 5 60 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 61 | docker exec -it app bash -c "php -v | grep -c 'PHP 7.0'" 62 | 63 | echo 64 | echo "-- Clear" 65 | docker rm -f -v app; sleep 5 66 | docker rmi -f php-7.0 67 | 68 | 69 | echo 70 | echo 71 | echo "-- Building PHP 5.6 image" 72 | docker build -t php-5.6 5.6/ 73 | 74 | echo 75 | echo "-- Testing server is running" 76 | docker run --name app -d php-5.6; sleep 5 77 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 78 | docker exec -it app bash -c "php -v | grep -c 'PHP 5.6'" 79 | 80 | echo 81 | echo "-- Clear" 82 | docker rm -f -v app; sleep 5 83 | docker rmi -f php-5.6 84 | 85 | echo 86 | echo 87 | echo "-- Building PHP 5.5 image" 88 | docker build -t php-5.5 5.5/ 89 | 90 | echo 91 | echo "-- Testing server is running" 92 | docker run --name app -d php-5.5; sleep 5 93 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 94 | docker exec -it app bash -c "php -v | grep -c 'PHP 5.5'" 95 | 96 | echo 97 | echo "-- Clear" 98 | docker rm -f -v app; sleep 5 99 | docker rmi -f php-5.5 100 | 101 | 102 | echo 103 | echo 104 | echo "-- Building PHP 5.4 image" 105 | docker build -t php-5.4 5.4/ 106 | 107 | echo 108 | echo "-- Testing server is running" 109 | docker run --name app -d php-5.4; sleep 5 110 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 111 | docker exec -it app bash -c "php -v | grep -c 'PHP 5.4'" 112 | 113 | echo 114 | echo "-- Clear" 115 | docker rm -f -v app; sleep 5 116 | docker rmi -f php-5.4 117 | 118 | 119 | echo 120 | echo 121 | echo "-- Building PHP 5.3 image" 122 | docker build -t php-5.3 5.3/ 123 | 124 | echo 125 | echo "-- Testing server is running" 126 | docker run --name app -d php-5.3; sleep 5 127 | docker exec -it app bash -c 'echo "echo 2;" | php -a | grep -wc 2' 128 | docker exec -it app bash -c "php -v | grep -c 'PHP 5.3'" 129 | 130 | echo 131 | echo "-- Clear" 132 | docker rm -f -v app; sleep 5 133 | docker rmi -f php-5.3 --------------------------------------------------------------------------------