Compare commits

...

105 Commits
0.17 ... 0.44

Author SHA1 Message Date
cytopia
6cbf1da423 Merge pull request #57 from devilbox/release-0.44
Add tool: jq
2018-11-02 00:45:10 +01:00
cytopia
9c7c504f88 fixup! Be verbose during npm install to debug any possible network outages 2018-11-01 21:23:34 +01:00
cytopia
ed13130025 Be verbose during npm install to debug any possible network outages 2018-11-01 20:33:41 +01:00
cytopia
e816c9a376 Install npm packages step-by-step due to download bug 2018-11-01 20:33:09 +01:00
cytopia
f5af07cede Add tool: jq 2018-11-01 17:55:00 +01:00
cytopia
cb29e8da6a Merge pull request #56 from devilbox/release-0.43
Fix build pipeline
2018-11-01 17:21:47 +01:00
cytopia
61224dfb12 Use newer pip version 2018-11-01 15:07:53 +01:00
cytopia
b257ffb972 Decrease image sizes 2018-11-01 13:55:27 +01:00
cytopia
10e114fdd2 Decrease image size of mods images 2018-11-01 12:48:46 +01:00
cytopia
6fb6a2f61c Fix swoole for PHP 7.3 2018-11-01 11:17:42 +01:00
cytopia
a9fc2a95a1 Fix drush9 installation 2018-11-01 09:53:23 +01:00
cytopia
dc2daccaaa Fix build pipeline 2018-10-31 23:12:46 +01:00
cytopia
d1d0bb1300 Merge pull request #55 from devilbox/release-0.42
Add tool: wkhtmltopdf
2018-09-30 20:25:10 +02:00
cytopia
4fa6943f8c Add tool: wkhtmltopdf 2018-09-30 12:45:26 +02:00
cytopia
8342c1e20f Merge pull request #54 from devilbox/release-0.41
Add drush7, drush8 and drush9 as separate binaries
2018-09-30 12:44:09 +02:00
cytopia
c991494dee Add drush7, drush8 and drush9 as separate binaries 2018-09-30 10:53:25 +02:00
cytopia
64f9fb510b Merge pull request #53 from devilbox/release-0.40
Release 0.40
2018-09-27 09:02:09 +02:00
cytopia
34d87faa62 Fix Makefile for docker pull targets 2018-09-26 15:22:06 +02:00
cytopia
49fb3c44dc Add Kafka PHP module 2018-09-26 15:21:43 +02:00
cytopia
7147549e97 Merge pull request #52 from devilbox/release-0.39
Adding tool: deployer
2018-09-13 17:35:43 +02:00
cytopia
78227bf2ee Disable deployer for PHP 5.2 and PHP 5.3 2018-09-13 10:51:07 +02:00
cytopia
5c1ae24dd7 Adding tool: deployer 2018-09-13 09:08:52 +02:00
cytopia
b57a7c1a24 Merge pull request #51 from devilbox/release-0.38
Add graphviz to all worker images
2018-09-12 08:40:15 +02:00
cytopia
c0bd7e32b8 Add graphviz 2018-09-11 23:40:47 +02:00
cytopia
4c856c6d67 Merge pull request #50 from devilbox/release-0.37
Add Tool: unzip
2018-08-30 08:17:52 +02:00
cytopia
68417da37f Add Tool: unzip 2018-08-29 22:17:27 +02:00
cytopia
fd255f1f9a Merge pull request #49 from devilbox/postfix-user-perm-on-windows
Mitigate postfix maildir permissions for Windows
2018-08-29 12:45:46 +02:00
cytopia
e285134ad3 Mitigate postfix maildir permissions for Windows 2018-08-29 08:51:11 +02:00
cytopia
53cc3c5cc9 Merge pull request #48 from devilbox/release-0.35
Refs #36: Adding ZSH shell
2018-08-27 14:39:45 +02:00
cytopia
00d2e41de8 Refs #36: Adding ZSH shell 2018-08-24 09:45:42 +02:00
cytopia
4afe6ab397 Merge pull request #47 from devilbox/release-0.34
Adding tree binary
2018-08-22 18:07:32 +02:00
cytopia
c427f37fba Adding tree binary 2018-08-22 13:05:24 +02:00
cytopia
ea68f8e37a Merge pull request #46 from devilbox/release-0.33
Add tool: AsgardCMS cli installer
2018-08-22 13:03:10 +02:00
cytopia
d5d07d0620 Add tool: AsgardCMS cli installer 2018-08-19 20:40:07 +02:00
cytopia
cfc06a1458 Merge pull request #45 from devilbox/release-0.32
Fix mhsendmail path
2018-08-13 01:08:38 +02:00
cytopia
92eceb9ae9 Fix mhsendmail path 2018-08-12 12:32:51 +02:00
cytopia
796195dfdc Merge pull request #44 from devilbox/release-0.31
Fix wp-cli installation
2018-08-12 11:25:52 +02:00
cytopia
3c17b4d3c1 Revert PHP 5.2 wpcli 2018-08-11 23:41:19 +02:00
cytopia
b79e4b5b1b Fix wp-cli installation 2018-08-11 23:02:57 +02:00
cytopia
d82a529955 Merge pull request #43 from devilbox/php-modules-warning
PHP modules warning
2018-08-11 23:02:29 +02:00
cytopia
c41d30c92f Add missing return after gathering state of PHP modules to disable 2018-08-10 09:37:08 +02:00
cytopia
3ffa64ad3a Add missing return after gathering state of additional PHP modules 2018-08-10 09:34:28 +02:00
cytopia
3a901f1699 Merge pull request #42 from devilbox/rsync
Adding rsync as a standard tool to all container
2018-08-08 08:25:43 +02:00
cytopia
e4c9e70957 Generate Dockerfiles 2018-08-08 00:14:28 +02:00
cytopia
619af1207d Adding tool: rsync 2018-08-08 00:13:14 +02:00
cytopia
ff6afb7296 Merge pull request #41 from devilbox/release-0.29
Fix default listen.backlog value
2018-08-04 20:07:14 +02:00
cytopia
8a4736f1e4 Fix default listen.backlog value 2018-08-04 16:55:11 +02:00
cytopia
c246645ed8 Merge pull request #40 from devilbox/release-0.28
Release 0.28: Performance
2018-08-04 12:34:56 +02:00
cytopia
c8a55c36e9 Default to system defined backlog value 2018-08-04 02:04:28 +02:00
cytopia
7902a6a1ab Fix tests for PHP 5.2 2018-08-04 02:04:06 +02:00
cytopia
04a24b69b6 Skip test for PHP 5.2 2018-08-03 23:37:18 +02:00
cytopia
cf21dc3ea7 PHP 5.2 Adjustments 2018-08-03 22:51:03 +02:00
cytopia
864e503563 Ensure overwritable files are sorted 2018-08-03 01:36:20 +02:00
cytopia
f42a90758f Fix logging to file for PHP 5.3 2018-08-03 01:10:38 +02:00
cytopia
5a805fb015 Finalize README 2018-08-02 22:00:20 +02:00
cytopia
bd336c9e09 Refs #30 Adjust tests for PHP 5.2 2018-08-02 21:55:44 +02:00
cytopia
cb176f5eba Harden PHP-FPM defaults 2018-08-02 20:37:08 +02:00
cytopia
cb31f9ac1f Extend tests 2018-08-02 20:36:32 +02:00
cytopia
fe0f94e73d Add Sequential tests 2018-08-02 16:26:33 +02:00
cytopia
726fe86700 Fix PHP 5.2 Run-time errors 2018-08-02 16:26:15 +02:00
cytopia
b03a857a42 Increase waiting time for slow machines 2018-08-02 16:08:30 +02:00
cytopia
cd52db5029 Remove old artifacts 2018-08-02 16:03:27 +02:00
cytopia
577a85ae9f Remove phalcon and phpunit from PHP 5.2 2018-08-02 16:00:35 +02:00
cytopia
eca4f371e3 Update README 2018-08-02 15:23:06 +02:00
cytopia
0975d97ca3 Apply sane PHP settings only via php.ini, not additionally via php-fpm.conf 2018-08-02 15:22:50 +02:00
cytopia
5aa7a77aba Fixes #21 Turn off Xdebug by default 2018-08-02 15:21:55 +02:00
cytopia
2de416c7cd Merge stash 2018-08-02 13:48:50 +02:00
cytopia
6ad00ccb3f Refs #30 apply git stash from previous PHP 5.2 setup 2018-08-02 13:44:35 +02:00
cytopia
694a7c0fea Refs #30 Adding PHP-FPM 5.2 2018-08-02 13:43:46 +02:00
cytopia
523c936f65 Make php configuration generatable via Ansible 2018-08-02 13:12:12 +02:00
cytopia
f9e78cf418 Apply tested configuration 2018-08-01 10:37:10 +02:00
cytopia
8661871431 Improve PHP-FPM performance 2018-08-01 09:34:59 +02:00
cytopia
ad4ea63cb8 Fix PS1 prompt 2018-08-01 09:34:29 +02:00
cytopia
89cd367c1e Merge pull request #39 from devilbox/release-0.27
Sane defaults for php.ini
2018-07-29 10:16:52 +02:00
cytopia
99754afd72 max_input_vars does not yet exist in PHP 5.3 2018-07-28 11:46:59 +02:00
cytopia
b2a7e7b041 Ensure memory_limit, post_max_size and upload_max_filesize have a correct ration 2018-07-28 11:39:59 +02:00
cytopia
9c9d325724 Ensure deprecated ini settings are removed in respective versions 2018-07-28 11:28:24 +02:00
cytopia
1b6799da58 Sane defaults for php.ini 2018-07-28 10:55:57 +02:00
cytopia
b66ddfbd3e Merge pull request #38 from devilbox/linkcheck
Add tool: linkcheck
2018-07-28 08:58:09 +02:00
cytopia
1663d3af7d Add tool: linkcheck 2018-07-27 19:36:45 +02:00
cytopia
46512b05a1 Merge pull request #37 from devilbox/release-0.25
Add PHPUnit
2018-07-27 18:03:52 +02:00
cytopia
a95be98d1c Add PHPUnit 2018-07-27 14:04:39 +02:00
cytopia
ba0709f3f0 Merge pull request #35 from devilbox/release-0.24
Add tool: Ansible
2018-07-23 08:27:23 +02:00
cytopia
329e7bf2ec Fix build error 2018-07-22 20:54:05 +02:00
cytopia
d84cc5708c Ansible dependencies 2018-07-22 20:38:52 +02:00
cytopia
21177a801c Add tool: Ansible 2018-07-22 10:42:27 +02:00
cytopia
d9ae1e9ff5 Merge pull request #34 from devilbox/release-0.23
Add tool: patch
2018-07-20 23:22:07 +02:00
cytopia
c6750acfce Add tool: patch 2018-07-20 19:00:08 +02:00
cytopia
5751f9ae96 Merge pull request #33 from devilbox/release-0.22
Add tool: Codeception
2018-07-20 18:58:57 +02:00
cytopia
72b675fa2a Add tool: Codeception 2018-07-20 16:23:35 +02:00
cytopia
1c867e1cfc Merge pull request #32 from Tuurlijk/master
Add mhsendmail for optional mailhandling by MailHog
2018-07-16 08:41:03 +02:00
Michiel Roos
e3512da650 Add mhsendmail so it can be used in php.ini to enable mailhandling by MailHog 2018-07-13 22:44:06 +02:00
cytopia
b2dc2c7704 Merge pull request #31 from devilbox/release-0.21
Fix swoole for PHP 7.0
2018-06-17 23:30:56 +02:00
cytopia
a3819e9add Fix swoole for PHP 7.0 2018-06-17 19:03:47 +02:00
cytopia
c4a75f61a5 Merge pull request #29 from devilbox/release-0.20
Fix dependencies
2018-05-28 00:29:17 +02:00
cytopia
d081de866b Fix dependencies and swoole 2018-05-27 14:21:26 +02:00
cytopia
4c09729cf3 Fix dependencies 2018-05-27 13:05:17 +02:00
cytopia
c7389796b4 Merge pull request #28 from devilbox/hotfix-typo
Fix typo
2018-05-21 23:09:29 +02:00
cytopia
9398cefbe2 Fix typo 2018-05-21 23:08:43 +02:00
cytopia
a1092be181 Merge pull request #26 from devilbox/release-0.18
Add Module: IonCube
2018-05-21 19:22:22 +02:00
cytopia
42b811f068 Provide ionCube, but disabled by default 2018-05-21 13:24:29 +02:00
cytopia
6507383d94 Use curl to download ionCube 2018-05-21 09:40:05 +02:00
cytopia
85f36d7c6b Add Module: IonCube 2018-05-21 09:40:01 +02:00
cytopia
8ed060fd60 Merge pull request #27 from devilbox/release-0.19
Feature: Disable PHP modules
2018-05-21 09:38:35 +02:00
cytopia
a4924537de Feature: Disable PHP modules 2018-05-20 16:43:44 +02:00
113 changed files with 11003 additions and 1722 deletions

View File

@@ -23,6 +23,7 @@ env:
# DOCKER_PASSWORD
- secure: "ZRrVOVOkSCS2UxEi1HNF1iKefK4sDT/sPRl1HxMQjLnRRaAMdG0aRnBwQf2YAM2qzhCfN85qt6zZtC4awc2mHiZ88JrAZxBjK6xj4BwOyLbDuzpBsKXnx8Nix+wyYYKSjsC3LOYrsUe+4rvkw3tVvVaX8G2llojwdksF34VDmmHBmzCG/Bsexk7UqC+qw0PZm7BtctQO+IL0btmMDijRDElxfR+AuPvf9JdkhYzw9TOO7Jqd53NssNVGyL+XSV0dfGn8PkZTp1e8D+28pLK4oGVog+Wk7Cq94hSGjk5AkWKvL5441rupG1AA8K3njeDNMKdov4o+dmnkAH7Jh8tjShMhNhoxHce3IzpczjhoE1EyYQcyPf1qdfhV35Xv096iWX5809pp1MZF2oE5eism8JaU9NpGClryVbKVKtup8ko9/tCqz01Czq5Vue40feMkGtdePulg59OhyyPLYldsObw8QlZydkrmgVZe6b+GyybeiHraTfDq4pvTgUrC4Cmm5J3IB5Ig1THEiYKHfRJ5hSSMDDODeBXc8Xh6mFssEVshNx/jbUQWuAVYQFw/GIquVHxr6btbevrWIoD+zmqcc0L98u9pYH8w7b+gMgVJNCC4QQz2NCGGWw9l9/TmLrKJgeXbG18n8D314le1zuna6/VfH9pXIlbNO4hgz5NLHJk="
matrix:
- PHP=5.2
- PHP=5.3
- PHP=5.4
- PHP=5.5
@@ -88,9 +89,6 @@ before_script:
- ./build/gen-readme.sh "${PHP}"
- git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
# Integration tests
- true
###
### Push to Dockerhub

View File

@@ -0,0 +1,95 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
FROM devilbox/php-fpm-5.2
MAINTAINER "cytopia" <cytopia@everythingcli.org>
###
### Labels
###
LABEL \
name="cytopia's PHP-FPM 5.2 Image" \
image="devilbox/php-fpm" \
tag="5.2-base" \
vendor="devilbox" \
license="MIT"
###
### Envs
###
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000" \
PHP_VERSION="5.2"
###
### User/Group
###
RUN set -x \
&& groupadd -g ${MY_GID} -r ${MY_GROUP} \
&& useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER}
###
### Upgrade (install ps)
###
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
###
### Configure
###
RUN set -x \
&& rm -rf /usr/local/etc/php-fpm.d \
&& mkdir -p /usr/local/etc/php-fpm.d \
&& mkdir -p /var/lib/php/session \
&& mkdir -p /var/lib/php/wsdlcache \
&& chown -R devilbox:devilbox /var/lib/php/session \
&& chown -R devilbox:devilbox /var/lib/php/wsdlcache
###
### Copy files
###
COPY ./data/php-ini.d/php-5.2.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.2.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###
### Ports
###
EXPOSE 9000
###
### Entrypoint
###
ENTRYPOINT ["/docker-entrypoint.sh"]

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="5.3"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,21 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-5.3.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.3.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
COPY ./data/php-fpm.d-docker-5.3.conf /usr/local/etc/php-fpm.d/docker.conf
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="5.4"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-5.4.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.4.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.4' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="5.5"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-5.5.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.5.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.5' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="5.6"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-5.6.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.6.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.6' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="7.0"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-7.0.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.0.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.0' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="7.1"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-7.1.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.1.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.1' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="7.2"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-7.2.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.2.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -20,7 +20,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="7.3"
###
@@ -35,9 +36,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -56,20 +56,31 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-7.3.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.3.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -1,3 +0,0 @@
[global]
daemonize = no
include = /usr/local/etc/php-fpm.d/*.conf

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" ?>
<configuration>
All relative paths in this config are relative to php's install prefix
<section name="global_options">
Pid file
<value name="pid_file">/var/run/php-fpm.pid</value>
Error log file
<value name="error_log">/proc/self/fd/2</value>
Log level
<value name="log_level">notice</value>
When this amount of php processes exited with SIGSEGV or SIGBUS ...
<value name="emergency_restart_threshold">10</value>
... in a less than this interval of time, a graceful restart will be initiated.
Useful to work around accidental curruptions in accelerator's shared memory.
<value name="emergency_restart_interval">1m</value>
Time limit on waiting child's reaction on signals from master
<value name="process_control_timeout">5s</value>
Set to 'no' to debug fpm
<value name="daemonize">no</value>
</section>
<workers>
<section name="pool">
Name of pool. Used in logs and stats.
<value name="name">www</value>
Address to accept fastcgi requests on.
Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
<value name="listen_address">0.0.0.0:9000</value>
<value name="listen_options">
Set listen(2) backlog
<value name="backlog">1024</value>
Set permissions for unix socket, if one used.
In Linux read/write permissions must be set in order to allow connections from web server.
Many BSD-derrived systems allow connections regardless of permissions.
<value name="owner"></value>
<value name="group"></value>
<value name="mode">0666</value>
</value>
Additional php.ini defines, specific to this pool of workers.
<value name="php_defines">
<value name="error_reporting">6135</value>
<value name="xmlrpc_errors">0</value>
<value name="report_memleaks">1</value>
<value name="display_errors">0</value>
<value name="display_startup_errors">0</value>
<value name="track_errors">1</value>
<value name="log_errors">1</value>
<value name="html_errors">0</value>
</value>
Unix user of processes
<value name="user">devilbox</value>
Unix group of processes
<value name="group">devilbox</value>
Process manager settings
<value name="pm">
Sets style of controling worker process count.
Valid values are 'static' and 'apache-like'
<value name="style">apache-like</value>
Sets the limit on the number of simultaneous requests that will be served.
Equivalent to Apache MaxClients directive.
Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
Used with any pm_style.
<!--<value name="max_children">50</value>-->
<value name="max_children">5</value>
Settings group for 'apache-like' pm style
<value name="apache_like">
Sets the number of server processes created on startup.
Used only when 'apache-like' pm_style is selected
<!--<value name="StartServers">4</value>-->
<value name="StartServers">3</value>
Sets the desired minimum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MinSpareServers">2</value>-->
<value name="MinSpareServers">2</value>
Sets the desired maximum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MaxSpareServers">6</value>-->
<value name="MaxSpareServers">4</value>
</value>
</value>
The timeout (in seconds) for serving a single request after which the worker process will be terminated
Should be used when 'max_execution_time' ini option does not stop script execution for some reason
'0s' means 'off'
<value name="request_terminate_timeout">120s</value>
The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
'0s' means 'off'
<value name="request_slowlog_timeout">0s</value>
The log file for slow requests
<value name="slowlog">/proc/self/fd/2</value>
Set open file desc rlimit
<value name="rlimit_files">1024</value>
Set max core size rlimit
<value name="rlimit_core">0</value>
Chroot to this directory at the start, absolute path
<value name="chroot"></value>
Chdir to this directory at the start, absolute path
<value name="chdir"></value>
Redirect workers' stdout and stderr into main error log.
If not set, they will be redirected to /dev/null, according to FastCGI specs
<value name="catch_workers_output">yes</value>
How much requests each process should execute before respawn.
Useful to work around memory leaks in 3rd party libraries.
For endless request processing please specify 0
Equivalent to PHP_FCGI_MAX_REQUESTS
<value name="max_requests">500</value>
Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
Makes sense only with AF_INET listening socket.
<!-- <value name="allowed_clients">127.0.0.1</value> -->
Pass environment variables like LD_LIBRARY_PATH
All $VARIABLEs are taken from current environment
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers>
</configuration>

View File

@@ -0,0 +1,132 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -1,10 +0,0 @@
[www]
; Keep env variables set by docker
;clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes

View File

@@ -1,10 +0,0 @@
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes

View File

@@ -1,3 +0,0 @@
[www]
; Ensure to listen here
listen = 9000

View File

@@ -1,6 +0,0 @@
[global]
error_log = /proc/self/fd/2
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2

View File

@@ -1,2 +0,0 @@
[global]
log_level = notice

View File

@@ -1,7 +0,0 @@
[www]
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 10

View File

@@ -1,5 +0,0 @@
[www]
; User and Group
user = devilbox
group = devilbox

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 5.2-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 5.3-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.4-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.5-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.6-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 7.0-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 7.1-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
track_errors = On
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 7.2-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 7.3-base
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = Off
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,638 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-mods.j2 instead.
FROM devilbox/php-fpm:5.2-base
MAINTAINER "cytopia" <cytopia@everythingcli.org>
###
### Labels
###
LABEL \
name="cytopia's PHP-FPM 5.2 Image" \
image="devilbox/php-fpm" \
tag="5.2-mods" \
vendor="devilbox" \
license="MIT"
###
### Envs
###
ENV BUILD_DEPS \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libenchant-dev \
libfbclient2 \
libfreetype6-dev \
libib-util \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libmagic-dev \
libmcrypt-dev \
libmemcached-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librecode0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libxpm4 \
libxslt1.1 \
snmp \
ca-certificates
###
### Install
###
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_5.2.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install amqp-1.4.0 \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install enchant \
&& docker-php-ext-enable enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install fileinfo \
&& docker-php-ext-enable fileinfo \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/x86_64-linux-gnu/libpng.* /usr/lib/ && \
ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
\
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary-2.0.7 \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install intl \
&& docker-php-ext-enable intl \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcache \
&& docker-php-ext-enable memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached-2.1.0 \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& yes | pecl install mongo-1.5.8 \
&& docker-php-ext-enable mongo \
\
&& rm -rf /usr/local/lib/php/test/mongo || true \
&& rm -rf /usr/local/lib/php/doc/mongo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack-0.5.7 \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysql || true \
&& rm -rf /usr/local/lib/php/doc/mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install zendopcache \
&& docker-php-ext-enable opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install phar \
&& docker-php-ext-enable phar \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis-2.2.7 \
&& docker-php-ext-enable redis \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install uploadprogress \
&& docker-php-ext-enable uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug-2.2.7 \
&& docker-php-ext-enable xdebug \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^bcmath$' \
&& php-fpm -m | grep -oiE '^bcmath$' \
&& php -m | grep -oiE '^bz2$' \
&& php-fpm -m | grep -oiE '^bz2$' \
&& php -m | grep -oiE '^calendar$' \
&& php-fpm -m | grep -oiE '^calendar$' \
&& php -m | grep -oiE '^ctype$' \
&& php-fpm -m | grep -oiE '^ctype$' \
&& php -m | grep -oiE '^curl$' \
&& php-fpm -m | grep -oiE '^curl$' \
&& php -m | grep -oiE '^dba$' \
&& php-fpm -m | grep -oiE '^dba$' \
&& php -m | grep -oiE '^dom$' \
&& php-fpm -m | grep -oiE '^dom$' \
&& php -m | grep -oiE '^enchant$' \
&& php-fpm -m | grep -oiE '^enchant$' \
&& php -m | grep -oiE '^exif$' \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
&& php-fpm -m | grep -oiE '^gd$' \
&& php -m | grep -oiE '^gettext$' \
&& php-fpm -m | grep -oiE '^gettext$' \
&& php -m | grep -oiE '^hash$' \
&& php-fpm -m | grep -oiE '^hash$' \
&& php -m | grep -oiE '^iconv$' \
&& php-fpm -m | grep -oiE '^iconv$' \
&& php -m | grep -oiE '^igbinary$' \
&& php-fpm -m | grep -oiE '^igbinary$' \
&& php -m | grep -oiE '^imap$' \
&& php-fpm -m | grep -oiE '^imap$' \
&& php -m | grep -oiE '^interbase$' \
&& php-fpm -m | grep -oiE '^interbase$' \
&& php -m | grep -oiE '^intl$' \
&& php-fpm -m | grep -oiE '^intl$' \
&& php -m | grep -oiE '^json$' \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
&& php-fpm -m | grep -oiE '^mcrypt$' \
&& php -m | grep -oiE '^memcache$' \
&& php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^msgpack$' \
&& php-fpm -m | grep -oiE '^msgpack$' \
&& php -m | grep -oiE '^mysql$' \
&& php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
&& php-fpm -m | grep -oiE '^pdo_dblib$' \
&& php -m | grep -oiE '^pdo_firebird$' \
&& php-fpm -m | grep -oiE '^pdo_firebird$' \
&& php -m | grep -oiE '^pdo_mysql$' \
&& php-fpm -m | grep -oiE '^pdo_mysql$' \
&& php -m | grep -oiE '^pdo_pgsql$' \
&& php-fpm -m | grep -oiE '^pdo_pgsql$' \
&& php -m | grep -oiE '^pdo_sqlite$' \
&& php-fpm -m | grep -oiE '^pdo_sqlite$' \
&& php -m | grep -oiE '^pgsql$' \
&& php-fpm -m | grep -oiE '^pgsql$' \
&& php -m | grep -oiE '^phar$' \
&& php-fpm -m | grep -oiE '^phar$' \
&& php -m | grep -oiE '^posix$' \
&& php-fpm -m | grep -oiE '^posix$' \
&& php -m | grep -oiE '^pspell$' \
&& php-fpm -m | grep -oiE '^pspell$' \
&& php -m | grep -oiE '^readline$' \
&& php-fpm -m | grep -oiE '^readline$' \
&& php -m | grep -oiE '^recode$' \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \
&& php-fpm -m | grep -oiE '^shmop$' \
&& php -m | grep -oiE '^simplexml$' \
&& php-fpm -m | grep -oiE '^simplexml$' \
&& php -m | grep -oiE '^snmp$' \
&& php-fpm -m | grep -oiE '^snmp$' \
&& php -m | grep -oiE '^soap$' \
&& php-fpm -m | grep -oiE '^soap$' \
&& php -m | grep -oiE '^sockets$' \
&& php-fpm -m | grep -oiE '^sockets$' \
&& php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \
&& php-fpm -m | grep -oiE '^sysvsem$' \
&& php -m | grep -oiE '^sysvshm$' \
&& php-fpm -m | grep -oiE '^sysvshm$' \
&& php -m | grep -oiE '^tidy$' \
&& php-fpm -m | grep -oiE '^tidy$' \
&& php -m | grep -oiE '^tokenizer$' \
&& php-fpm -m | grep -oiE '^tokenizer$' \
&& php -m | grep -oiE '^uploadprogress$' \
&& php-fpm -m | grep -oiE '^uploadprogress$' \
&& php -m | grep -oiE '^wddx$' \
&& php-fpm -m | grep -oiE '^wddx$' \
&& php -m | grep -oiE '^xdebug$' \
&& php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \
&& php-fpm -m | grep -oiE '^xml$' \
&& php -m | grep -oiE '^xmlreader$' \
&& php-fpm -m | grep -oiE '^xmlreader$' \
&& php -m | grep -oiE '^xmlrpc$' \
&& php-fpm -m | grep -oiE '^xmlrpc$' \
&& php -m | grep -oiE '^xmlwriter$' \
&& php-fpm -m | grep -oiE '^xmlwriter$' \
&& php -m | grep -oiE '^xsl$' \
&& php-fpm -m | grep -oiE '^xsl$' \
&& php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \
&& true
###
### Ports
###
EXPOSE 9000
###
### Entrypoint
###
ENTRYPOINT ["/docker-entrypoint.sh"]

View File

@@ -18,92 +18,66 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libsasl2-dev \
libmagickwand-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libfbclient2 \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmagickwand-6.q16-2 \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libsybdb5 \
libfbclient2 \
libpq5 \
libpq5 \
libaspell15 \
librecode0 \
snmp \
libnghttp2-5 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libxpm4 \
libxslt1.1 \
snmp \
ca-certificates
@@ -111,144 +85,450 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_5.3.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu-4.0.11 \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ && mkdir /usr/include/freetype2/freetype && ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick-3.3.0 \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcache \
&& docker-php-ext-enable memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& yes | pecl install mongo \
&& docker-php-ext-enable mongo \
\
&& rm -rf /usr/local/lib/php/test/mongo || true \
&& rm -rf /usr/local/lib/php/doc/mongo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb-0.6.3 \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack-0.5.7 \
&& docker-php-ext-enable msgpack \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysql || true \
&& rm -rf /usr/local/lib/php/doc/mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install zendopcache \
&& docker-php-ext-enable opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout phalcon-v2.0.9 \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole-1.9.23 \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install uploadprogress \
&& docker-php-ext-enable uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug-2.2.7 \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
&& /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlreader \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -273,6 +553,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -299,6 +581,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -317,10 +601,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -347,6 +637,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \

View File

@@ -18,92 +18,66 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libsasl2-dev \
libmagickwand-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libfbclient2 \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmagickwand-6.q16-2 \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libsybdb5 \
libfbclient2 \
libpq5 \
libpq5 \
libaspell15 \
librecode0 \
snmp \
libnghttp2-5 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libxpm4 \
libxslt1.1 \
snmp \
ca-certificates
@@ -111,144 +85,455 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_5.4.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu-4.0.11 \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install calendar \
&& /usr/local/bin/docker-php-ext-install ctype \
&& /usr/local/bin/docker-php-ext-install curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install exif \
&& /usr/local/bin/docker-php-ext-install fileinfo \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install ftp \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install gmp \
&& /usr/local/bin/docker-php-ext-install hash \
&& /usr/local/bin/docker-php-ext-install iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install intl \
&& /usr/local/bin/docker-php-ext-install json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install ldap \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install mbstring \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcache \
&& docker-php-ext-enable memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& yes | pecl install mongo \
&& docker-php-ext-enable mongo \
\
&& rm -rf /usr/local/lib/php/test/mongo || true \
&& rm -rf /usr/local/lib/php/doc/mongo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb-1.2.11 \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack-0.5.7 \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install mysql \
\
&& rm -rf /usr/local/lib/php/test/mysql || true \
&& rm -rf /usr/local/lib/php/doc/mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install zendopcache \
&& docker-php-ext-enable opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install pcntl \
&& /usr/local/bin/docker-php-ext-install pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout phalcon-v2.0.13 \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install phar \
&& /usr/local/bin/docker-php-ext-install posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install pspell \
&& /usr/local/bin/docker-php-ext-install recode \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole-1.9.23 \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install tidy \
&& /usr/local/bin/docker-php-ext-install tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install uploadprogress \
&& docker-php-ext-enable uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug-2.4.1 \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install xml \
&& /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install xmlreader \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \
&& /usr/local/bin/docker-php-ext-install zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.4' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -273,6 +558,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -299,6 +586,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -317,10 +606,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -343,10 +638,14 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^posix$' \
&& php -m | grep -oiE '^pspell$' \
&& php-fpm -m | grep -oiE '^pspell$' \
&& php -m | grep -oiE '^readline$' \
&& php-fpm -m | grep -oiE '^readline$' \
&& php -m | grep -oiE '^recode$' \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \

View File

@@ -18,94 +18,67 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libsasl2-dev \
libmagickwand-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libfbclient2 \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmagickwand-6.q16-2 \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libsybdb5 \
libfbclient2 \
libpq5 \
libpq5 \
libaspell15 \
librecode0 \
snmp \
libnghttp2-5 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libxpm4 \
libxslt1.1 \
snmp \
ca-certificates
@@ -113,144 +86,452 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_5.5.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu-4.0.11 \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcache \
&& docker-php-ext-enable memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& yes | pecl install mongo \
&& docker-php-ext-enable mongo \
\
&& rm -rf /usr/local/lib/php/test/mongo || true \
&& rm -rf /usr/local/lib/php/doc/mongo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack-0.5.7 \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
\
&& rm -rf /usr/local/lib/php/test/mysql || true \
&& rm -rf /usr/local/lib/php/doc/mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole-1.9.23 \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install uploadprogress \
&& docker-php-ext-enable uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug-2.4.1 \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
&& /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlreader \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.5' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -275,6 +556,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -301,6 +584,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -319,10 +604,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -351,6 +642,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \

View File

@@ -18,96 +18,71 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libsasl2-dev \
libmagickwand-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libfbclient2 \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libwebp-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
zlib1g-dev \
libzip-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libicu52 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmagickwand-6.q16-3 \
libmariadbclient18 \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libsybdb5 \
libfbclient2 \
libnghttp2-14 \
libpng16-16 \
libpq5 \
libpq5 \
libaspell15 \
librabbitmq4 \
librdkafka1 \
librecode0 \
snmp \
libnghttp2-5 \
libtidy-0.99-0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libzip2 \
libzip4 \
snmp \
ca-certificates
@@ -115,144 +90,448 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_5.6.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu-4.0.11 \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcache \
&& docker-php-ext-enable memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached-2.2.0 \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& yes | pecl install mongo \
&& docker-php-ext-enable mongo \
\
&& rm -rf /usr/local/lib/php/test/mongo || true \
&& rm -rf /usr/local/lib/php/doc/mongo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack-0.5.7 \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
\
&& rm -rf /usr/local/lib/php/test/mysql || true \
&& rm -rf /usr/local/lib/php/doc/mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole-1.9.23 \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install uploadprogress \
&& docker-php-ext-enable uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug-2.4.1 \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
&& /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlreader \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.6' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -277,6 +556,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -303,6 +584,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -321,10 +604,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -341,8 +630,6 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^pgsql$' \
&& php -m | grep -oiE '^phalcon$' \
&& php-fpm -m | grep -oiE '^phalcon$' \
&& php -m | grep -oiE '^phar$' \
&& php-fpm -m | grep -oiE '^phar$' \
&& php -m | grep -oiE '^posix$' \
&& php-fpm -m | grep -oiE '^posix$' \
&& php -m | grep -oiE '^pspell$' \
@@ -353,6 +640,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \

View File

@@ -18,94 +18,70 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
libbz2-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfreetype6-dev \
libwebp-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
bison \
libldap2-dev \
libsasl2-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libenchant-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libmagickwand-dev \
libmcrypt-dev \
libmemcached-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librabbitmq-dev \
librdkafka-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsasl2-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libnghttp2-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libwebp-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
zlib1g-dev \
libzip-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libwebp-dev \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libicu52 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmagickwand-6.q16-3 \
libmcrypt4 \
libmemcachedutil2 \
libsybdb5 \
libfbclient2 \
libnghttp2-14 \
libpng16-16 \
libpq5 \
libpq5 \
libaspell15 \
librabbitmq4 \
librdkafka1 \
librecode0 \
snmp \
libnghttp2-5 \
libtidy-0.99-0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libzip2 \
libzip4 \
snmp \
ca-certificates
@@ -113,51 +89,171 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_7.0.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/websupport-sk/pecl-memcache /tmp/memcache \
&& cd /tmp/memcache \
&& phpize \
@@ -165,53 +261,190 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable memcache \
&& cd / && rm -rf /tmp/memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
&& pecl install swoole \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole-2.2.0 \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \
&& cd /tmp/uploadprogress \
&& phpize \
@@ -219,43 +452,85 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable uploadprogress \
&& cd / && rm -rf /tmp/uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.0' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -280,6 +555,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -306,6 +583,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -320,10 +599,18 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^msgpack$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
&& php-fpm -m | grep -oiE '^pdo_dblib$' \
&& php -m | grep -oiE '^pdo_firebird$' \
@@ -348,6 +635,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \
@@ -380,6 +669,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \
&& php-fpm -m | grep -oiE '^xml$' \
&& php -m | grep -oiE '^xmlreader$' \
&& php-fpm -m | grep -oiE '^xmlreader$' \
&& php -m | grep -oiE '^xmlrpc$' \
&& php-fpm -m | grep -oiE '^xmlrpc$' \
&& php -m | grep -oiE '^xmlwriter$' \

View File

@@ -18,94 +18,70 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
libbz2-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfreetype6-dev \
libwebp-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libldap2-dev \
libsasl2-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libenchant-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libmagickwand-dev \
libmcrypt-dev \
libmemcached-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libwebp-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
zlib1g-dev \
libzip-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq1 \
libenchant1c2a \
libpng12-0 \
libjpeg62-turbo \
libxpm4 \
libvpx1 \
libfreetype6 \
libwebp-dev \
libmagickwand-6.q16-2 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libicu52 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmagickwand-6.q16-3 \
libmcrypt4 \
libmemcachedutil2 \
libsybdb5 \
libfbclient2 \
libnghttp2-14 \
libpng16-16 \
libpq5 \
libpq5 \
libaspell15 \
librabbitmq4 \
librdkafka1 \
librecode0 \
snmp \
libnghttp2-5 \
libtidy-0.99-0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libzip2 \
libzip4 \
snmp \
ca-certificates
@@ -113,51 +89,171 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_7.1.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --enable-gd-native-ttf \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/websupport-sk/pecl-memcache /tmp/memcache \
&& cd /tmp/memcache \
&& phpize \
@@ -165,55 +261,193 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable memcache \
&& cd / && rm -rf /tmp/memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \
&& cd /tmp/uploadprogress \
&& phpize \
@@ -221,43 +455,85 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable uploadprogress \
&& cd / && rm -rf /tmp/uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.1' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -282,6 +558,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -308,6 +586,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -322,10 +602,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^msgpack$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -354,6 +640,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \
@@ -386,6 +674,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \
&& php-fpm -m | grep -oiE '^xml$' \
&& php -m | grep -oiE '^xmlreader$' \
&& php-fpm -m | grep -oiE '^xmlreader$' \
&& php -m | grep -oiE '^xmlrpc$' \
&& php-fpm -m | grep -oiE '^xmlrpc$' \
&& php -m | grep -oiE '^xmlwriter$' \

View File

@@ -18,95 +18,70 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
librabbitmq-dev \
libbz2-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfreetype6-dev \
libwebp-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libldap2-dev \
libsasl2-dev \
libmcrypt-dev \
zlib1g-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libenchant-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libsodium-dev \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libmagickwand-dev \
libmcrypt-dev \
libmemcached-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librabbitmq-dev \
librdkafka-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libwebp-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
zlib1g-dev \
libzip-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
librabbitmq4 \
libenchant1c2a \
libpng16-16 \
libjpeg62-turbo \
libxpm4 \
libvpx4 \
libfreetype6 \
libwebp6 \
libmagickwand-6.q16-3 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmagickwand-6.q16-3 \
libmcrypt4 \
libmemcachedutil2 \
libsybdb5 \
libfbclient2 \
libpq5 \
libpq5 \
libaspell15 \
librecode0 \
snmp \
libnghttp2-14 \
libpng16-16 \
libpq5 \
librabbitmq4 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libzip4 \
snmp \
ca-certificates
@@ -114,52 +89,172 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& pecl install amqp \
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \
&& cd ioncube \
&& cp "ioncube_loader_lin_7.2.so" "${EXTENSION_DIR}/ioncube.so" \
&& cd ../ \
&& rm -rf ioncube \
&& rm -rf ioncube.tar.gz \
\
\
&& rm -rf /usr/local/lib/php/test/ioncube || true \
&& rm -rf /usr/local/lib/php/doc/ioncube || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& echo "/usr" | pecl install amqp \
&& docker-php-ext-enable amqp \
\
&& rm -rf /usr/local/lib/php/test/amqp || true \
&& rm -rf /usr/local/lib/php/doc/amqp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mcrypt-1.0.1 \
&& docker-php-ext-enable mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/websupport-sk/pecl-memcache /tmp/memcache \
&& cd /tmp/memcache \
&& phpize \
@@ -167,56 +262,197 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable memcache \
&& cd / && rm -rf /tmp/memcache \
\
&& rm -rf /usr/local/lib/php/test/memcache || true \
&& rm -rf /usr/local/lib/php/doc/memcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install memcached \
&& docker-php-ext-enable memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install msgpack \
&& docker-php-ext-enable msgpack \
\
&& rm -rf /usr/local/lib/php/test/msgpack || true \
&& rm -rf /usr/local/lib/php/doc/msgpack || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
&& cd build && ./install \
&& docker-php-ext-enable phalcon \
&& cd / && rm -rf /tmp/phalcon \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/phalcon || true \
&& rm -rf /usr/local/lib/php/doc/phalcon || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sodium \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/sodium || true \
&& rm -rf /usr/local/lib/php/doc/sodium || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install swoole \
&& docker-php-ext-enable swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \
&& cd /tmp/uploadprogress \
&& phpize \
@@ -224,43 +460,85 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable uploadprogress \
&& cd / && rm -rf /tmp/uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
\
&& rm -rf /usr/local/lib/php/test/xdebug || true \
&& rm -rf /usr/local/lib/php/doc/xdebug || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^amqp$' \
&& php-fpm -m | grep -oiE '^amqp$' \
&& php -m | grep -oiE '^apcu$' \
@@ -285,6 +563,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -311,6 +591,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
@@ -325,10 +607,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^msgpack$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -357,6 +645,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \
@@ -391,6 +681,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \
&& php-fpm -m | grep -oiE '^xml$' \
&& php -m | grep -oiE '^xmlreader$' \
&& php-fpm -m | grep -oiE '^xmlreader$' \
&& php -m | grep -oiE '^xmlrpc$' \
&& php-fpm -m | grep -oiE '^xmlrpc$' \
&& php -m | grep -oiE '^xmlwriter$' \

View File

@@ -18,95 +18,71 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
libbz2-dev \
libcurl4-openssl-dev \
libxml2-dev \
libenchant-dev \
libssl-dev \
libpng-dev \
libjpeg-dev \
libxpm-dev \
libvpx-dev \
zlib1g-dev \
libfreetype6-dev \
libwebp-dev \
libgmp-dev \
libmagickwand-dev \
libc-client-dev \
libkrb5-dev \
libcurl4-openssl-dev \
libfbclient2 \
libib-util \
firebird-dev \
libicu-dev \
libldap2-dev \
libsasl2-dev \
libmcrypt-dev \
zlib1g-dev \
libmemcached-dev \
libssl-dev \
libsasl2-dev \
freetds-dev \
libfbclient2 \
libib-util \
firebird-dev \
zlib1g-dev \
libpq-dev \
libsqlite3-dev \
libpq-dev \
libssl-dev \
libpspell-dev \
libedit-dev \
libreadline-dev \
librecode-dev \
libmm-dev \
libxml2-dev \
libssl-dev \
libsnmp-dev \
snmp \
libxml2-dev \
libsodium-dev \
libnghttp2-dev \
libssl-dev \
libhiredis-dev \
cmake \
firebird-dev \
freetds-dev \
libbz2-dev \
libc-client-dev \
libcurl4-openssl-dev \
libenchant-dev \
libfbclient2 \
libfreetype6-dev \
libgmp-dev \
libhiredis-dev \
libib-util \
libicu-dev \
libjpeg-dev \
libkrb5-dev \
libldap2-dev \
libmagickwand-dev \
libmcrypt-dev \
libmemcached-dev \
libnghttp2-dev \
libpng-dev \
libpq-dev \
libpspell-dev \
librdkafka-dev \
librecode-dev \
libsasl2-dev \
libsnmp-dev \
libssl-dev \
libtidy-dev \
libvpx-dev \
libwebp-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxml2-dev \
libxpm-dev \
libxslt-dev \
zlib1g-dev \
libzip-dev \
snmp \
zlib1g-dev \
ca-certificates \
git
ENV RUN_DEPS \
libenchant1c2a \
libpng16-16 \
libjpeg62-turbo \
libxpm4 \
libvpx4 \
libfreetype6 \
libwebp6 \
libmagickwand-6.q16-3 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libhiredis0.13 \
libicu57 \
libjpeg62-turbo \
libmagickwand-6.q16-3 \
libmcrypt4 \
libmemcachedutil2 \
libsybdb5 \
libfbclient2 \
libpq5 \
libpq5 \
libaspell15 \
librecode0 \
snmp \
libnghttp2-14 \
libhiredis0.13 \
libpng16-16 \
libpq5 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libzip4 \
snmp \
ca-certificates
@@ -114,91 +90,302 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
&& pecl install apcu \
&& docker-php-ext-enable apcu \
\
&& rm -rf /usr/local/lib/php/test/apcu || true \
&& rm -rf /usr/local/lib/php/doc/apcu || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
\
&& rm -rf /usr/local/lib/php/test/bcmath || true \
&& rm -rf /usr/local/lib/php/doc/bcmath || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
\
&& rm -rf /usr/local/lib/php/test/bz2 || true \
&& rm -rf /usr/local/lib/php/doc/bz2 || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \
\
&& rm -rf /usr/local/lib/php/test/calendar || true \
&& rm -rf /usr/local/lib/php/doc/calendar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ctype || true \
&& rm -rf /usr/local/lib/php/doc/ctype || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/curl || true \
&& rm -rf /usr/local/lib/php/doc/curl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& /usr/local/bin/docker-php-ext-configure dom --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \
\
&& rm -rf /usr/local/lib/php/test/dba || true \
&& rm -rf /usr/local/lib/php/doc/dba || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/dom || true \
&& rm -rf /usr/local/lib/php/doc/dom || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
\
&& rm -rf /usr/local/lib/php/test/enchant || true \
&& rm -rf /usr/local/lib/php/doc/enchant || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \
&& /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
\
&& rm -rf /usr/local/lib/php/test/exif || true \
&& rm -rf /usr/local/lib/php/doc/exif || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/fileinfo || true \
&& rm -rf /usr/local/lib/php/doc/fileinfo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/filter || true \
&& rm -rf /usr/local/lib/php/doc/filter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/ftp || true \
&& rm -rf /usr/local/lib/php/doc/ftp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure gd --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
\
&& rm -rf /usr/local/lib/php/test/gd || true \
&& rm -rf /usr/local/lib/php/doc/gd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
\
&& rm -rf /usr/local/lib/php/test/gettext || true \
&& rm -rf /usr/local/lib/php/doc/gettext || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \
\
&& rm -rf /usr/local/lib/php/test/gmp || true \
&& rm -rf /usr/local/lib/php/doc/gmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/hash || true \
&& rm -rf /usr/local/lib/php/doc/hash || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/iconv || true \
&& rm -rf /usr/local/lib/php/doc/iconv || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install igbinary \
&& docker-php-ext-enable igbinary \
\
&& rm -rf /usr/local/lib/php/test/igbinary || true \
&& rm -rf /usr/local/lib/php/doc/igbinary || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
\
&& rm -rf /usr/local/lib/php/test/imagick || true \
&& rm -rf /usr/local/lib/php/doc/imagick || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
\
&& rm -rf /usr/local/lib/php/test/imap || true \
&& rm -rf /usr/local/lib/php/doc/imap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
\
&& rm -rf /usr/local/lib/php/test/interbase || true \
&& rm -rf /usr/local/lib/php/doc/interbase || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \
\
&& rm -rf /usr/local/lib/php/test/intl || true \
&& rm -rf /usr/local/lib/php/doc/intl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/json || true \
&& rm -rf /usr/local/lib/php/doc/json || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
\
&& rm -rf /usr/local/lib/php/test/ldap || true \
&& rm -rf /usr/local/lib/php/doc/ldap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/libxml || true \
&& rm -rf /usr/local/lib/php/doc/libxml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mbstring || true \
&& rm -rf /usr/local/lib/php/doc/mbstring || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mcrypt-1.0.1 \
&& docker-php-ext-enable mcrypt \
\
&& rm -rf /usr/local/lib/php/test/mcrypt || true \
&& rm -rf /usr/local/lib/php/doc/mcrypt || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/php-memcached-dev/php-memcached /tmp/memcached \
&& cd /tmp/memcached \
&& git checkout master \
&& phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install \
&& docker-php-ext-enable memcached \
&& cd / && rm -rf /tmp/memcached \
\
&& rm -rf /usr/local/lib/php/test/memcached || true \
&& rm -rf /usr/local/lib/php/doc/memcached || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
\
&& rm -rf /usr/local/lib/php/test/mongodb || true \
&& rm -rf /usr/local/lib/php/doc/mongodb || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
\
&& rm -rf /usr/local/lib/php/test/mysqli || true \
&& rm -rf /usr/local/lib/php/doc/mysqli || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/mysqlnd || true \
&& rm -rf /usr/local/lib/php/doc/mysqlnd || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \
\
&& rm -rf /usr/local/lib/php/test/opcache || true \
&& rm -rf /usr/local/lib/php/doc/opcache || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/openssl || true \
&& rm -rf /usr/local/lib/php/doc/openssl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo \
\
&& rm -rf /usr/local/lib/php/test/pcntl || true \
&& rm -rf /usr/local/lib/php/doc/pcntl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pcre || true \
&& rm -rf /usr/local/lib/php/doc/pcre || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo || true \
&& rm -rf /usr/local/lib/php/doc/pdo || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
\
&& rm -rf /usr/local/lib/php/test/pdo_dblib || true \
&& rm -rf /usr/local/lib/php/doc/pdo_dblib || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
\
&& rm -rf /usr/local/lib/php/test/pdo_firebird || true \
&& rm -rf /usr/local/lib/php/doc/pdo_firebird || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
\
&& rm -rf /usr/local/lib/php/test/pdo_mysql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_mysql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \
\
&& rm -rf /usr/local/lib/php/test/pdo_pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pdo_pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/pdo_sqlite || true \
&& rm -rf /usr/local/lib/php/doc/pdo_sqlite || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \
\
&& rm -rf /usr/local/lib/php/test/pgsql || true \
&& rm -rf /usr/local/lib/php/doc/pgsql || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/phar || true \
&& rm -rf /usr/local/lib/php/doc/phar || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/posix || true \
&& rm -rf /usr/local/lib/php/doc/posix || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \
\
&& rm -rf /usr/local/lib/php/test/pspell || true \
&& rm -rf /usr/local/lib/php/doc/pspell || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/readline || true \
&& rm -rf /usr/local/lib/php/doc/readline || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
\
&& rm -rf /usr/local/lib/php/test/recode || true \
&& rm -rf /usr/local/lib/php/doc/recode || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& /usr/local/bin/docker-php-ext-configure session --with-mm \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \
\
&& rm -rf /usr/local/lib/php/test/redis || true \
&& rm -rf /usr/local/lib/php/doc/redis || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& pecl install rdkafka \
&& docker-php-ext-enable rdkafka \
\
&& rm -rf /usr/local/lib/php/test/rdkafka || true \
&& rm -rf /usr/local/lib/php/doc/rdkafka || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/session || true \
&& rm -rf /usr/local/lib/php/doc/session || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \
\
&& rm -rf /usr/local/lib/php/test/shmop || true \
&& rm -rf /usr/local/lib/php/doc/shmop || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/simplexml || true \
&& rm -rf /usr/local/lib/php/doc/simplexml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
\
&& rm -rf /usr/local/lib/php/test/snmp || true \
&& rm -rf /usr/local/lib/php/doc/snmp || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
\
&& rm -rf /usr/local/lib/php/test/soap || true \
&& rm -rf /usr/local/lib/php/doc/soap || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sodium \
\
&& rm -rf /usr/local/lib/php/test/sockets || true \
&& rm -rf /usr/local/lib/php/doc/sockets || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/sodium || true \
&& rm -rf /usr/local/lib/php/doc/sodium || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/swoole/swoole-src /tmp/swoole \
&& cd /tmp/swoole \
&& git checkout master \
&& git submodule update --init --recursive \
&& git checkout $(git describe --abbrev=0 --tags) \
&& git submodule update --init --recursive \
&& cd thirdparty/hiredis \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
@@ -219,7 +406,7 @@ RUN set -x \
--enable-mysqlnd \
--enable-coroutine \
--enable-picohttpparser \
--enable-timewheel \
#`--enable-timewheel` \
#`--enable-hugepage` \
#`--enable-asan` \
#`--with-phpx-dir=` \
@@ -232,12 +419,34 @@ RUN set -x \
&& make install \
\
&& docker-php-ext-enable swoole \
&& cd / && rm -rf /tmp/swoole \
\
&& rm -rf /usr/local/lib/php/test/swoole || true \
&& rm -rf /usr/local/lib/php/doc/swoole || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
\
&& rm -rf /usr/local/lib/php/test/sysvmsg || true \
&& rm -rf /usr/local/lib/php/doc/sysvmsg || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
\
&& rm -rf /usr/local/lib/php/test/sysvsem || true \
&& rm -rf /usr/local/lib/php/doc/sysvsem || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
\
&& rm -rf /usr/local/lib/php/test/sysvshm || true \
&& rm -rf /usr/local/lib/php/doc/sysvshm || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \
\
&& rm -rf /usr/local/lib/php/test/tidy || true \
&& rm -rf /usr/local/lib/php/doc/tidy || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/tokenizer || true \
&& rm -rf /usr/local/lib/php/doc/tokenizer || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \
&& cd /tmp/uploadprogress \
&& phpize \
@@ -245,41 +454,79 @@ RUN set -x \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& docker-php-ext-enable uploadprogress \
&& cd / && rm -rf /tmp/uploadprogress \
\
&& rm -rf /usr/local/lib/php/test/uploadprogress || true \
&& rm -rf /usr/local/lib/php/doc/uploadprogress || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
&& /usr/local/bin/docker-php-ext-configure xml --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xml \
\
&& rm -rf /usr/local/lib/php/test/wddx || true \
&& rm -rf /usr/local/lib/php/doc/wddx || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xml || true \
&& rm -rf /usr/local/lib/php/doc/xml || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlreader || true \
&& rm -rf /usr/local/lib/php/doc/xmlreader || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \
\
&& rm -rf /usr/local/lib/php/test/xmlrpc || true \
&& rm -rf /usr/local/lib/php/doc/xmlrpc || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
\
&& rm -rf /usr/local/lib/php/test/xmlwriter || true \
&& rm -rf /usr/local/lib/php/doc/xmlwriter || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
\
&& rm -rf /usr/local/lib/php/test/xsl || true \
&& rm -rf /usr/local/lib/php/doc/xsl || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \
&& /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
\
&& rm -rf /usr/local/lib/php/test/zip || true \
&& rm -rf /usr/local/lib/php/doc/zip || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
&& rm -rf /tmp/* \
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
&& php -m | grep -oiE '^apcu$' \
&& php-fpm -m | grep -oiE '^apcu$' \
&& php -m | grep -oiE '^bcmath$' \
@@ -302,6 +549,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^exif$' \
&& php -m | grep -oiE '^fileinfo$' \
&& php-fpm -m | grep -oiE '^fileinfo$' \
&& php -m | grep -oiE '^filter$' \
&& php-fpm -m | grep -oiE '^filter$' \
&& php -m | grep -oiE '^ftp$' \
&& php-fpm -m | grep -oiE '^ftp$' \
&& php -m | grep -oiE '^gd$' \
@@ -328,6 +577,10 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^json$' \
&& php -m | grep -oiE '^ldap$' \
&& php-fpm -m | grep -oiE '^ldap$' \
&& php -m | grep -oiE '^libxml$' \
&& php-fpm -m | grep -oiE '^libxml$' \
&& php -m | grep -oiE '^mbstring$' \
&& php-fpm -m | grep -oiE '^mbstring$' \
&& php -m | grep -oiE '^mcrypt$' \
&& php-fpm -m | grep -oiE '^mcrypt$' \
&& php -m | grep -oiE '^memcached$' \
@@ -336,10 +589,16 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^mongodb$' \
&& php -m | grep -oiE '^mysqli$' \
&& php-fpm -m | grep -oiE '^mysqli$' \
&& php -m | grep -oiE '^mysqlnd$' \
&& php-fpm -m | grep -oiE '^mysqlnd$' \
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
&& php -m | grep -oiE '^openssl$' \
&& php-fpm -m | grep -oiE '^openssl$' \
&& php -m | grep -oiE '^pcntl$' \
&& php-fpm -m | grep -oiE '^pcntl$' \
&& php -m | grep -oiE '^pcre$' \
&& php-fpm -m | grep -oiE '^pcre$' \
&& php -m | grep -oiE '^pdo$' \
&& php-fpm -m | grep -oiE '^pdo$' \
&& php -m | grep -oiE '^pdo_dblib$' \
@@ -366,6 +625,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^recode$' \
&& php -m | grep -oiE '^redis$' \
&& php-fpm -m | grep -oiE '^redis$' \
&& php -m | grep -oiE '^rdkafka$' \
&& php-fpm -m | grep -oiE '^rdkafka$' \
&& php -m | grep -oiE '^session$' \
&& php-fpm -m | grep -oiE '^session$' \
&& php -m | grep -oiE '^shmop$' \
@@ -398,6 +659,8 @@ RUN set -x \
&& php-fpm -m | grep -oiE '^wddx$' \
&& php -m | grep -oiE '^xml$' \
&& php-fpm -m | grep -oiE '^xml$' \
&& php -m | grep -oiE '^xmlreader$' \
&& php-fpm -m | grep -oiE '^xmlreader$' \
&& php -m | grep -oiE '^xmlrpc$' \
&& php-fpm -m | grep -oiE '^xmlrpc$' \
&& php -m | grep -oiE '^xmlwriter$' \

View File

@@ -0,0 +1,92 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-prod.j2 instead.
FROM devilbox/php-fpm:5.2-mods
MAINTAINER "cytopia" <cytopia@everythingcli.org>
###
### Labels
###
LABEL \
name="cytopia's PHP-FPM 5.2 Image" \
image="devilbox/php-fpm" \
tag="5.2-prod" \
vendor="devilbox" \
license="MIT"
###
### Install
###
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###
### Copy files
###
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/postfix.sh /usr/local/sbin/postfix.sh
COPY ./data/supervisord.conf /etc/supervisor/supervisord.conf
###
### Volumes
###
VOLUME /etc/php-custom.d
VOLUME /etc/php-fpm-custom.d
VOLUME /etc/php-modules.d
VOLUME /var/log/php
VOLUME /var/mail
###
### Ports
###
EXPOSE 9000
###
### Entrypoint
###
ENTRYPOINT ["/docker-entrypoint.sh"]

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.4' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.5' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.6' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.0' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.1' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -39,10 +44,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
###

View File

@@ -69,6 +69,9 @@ set_postfix() {
run "chown ${username}:${groupname} /var/mail" "${debug}"
run "chown ${username}:${groupname} /var/mail/${username}" "${debug}"
# warning: specify "strict_mailbox_ownership = no" to ignore mailbox ownership mismatch
run "postconf -e 'strict_mailbox_ownership=no'" "${debug}"
# Postfix configuration
run "postconf -e 'inet_protocols=ipv4'" "${debug}"
run "postconf -e 'virtual_alias_maps=pcre:/etc/postfix/virtual'" "${debug}"

View File

@@ -10,21 +10,26 @@ set -o pipefail
############################################################
_log_to_dockerlogs() {
local conf_logfile="${1}"
local php_fpm_conf="${1}"
local php_ini_conf="${2}"
{
echo "[global]"
echo "error_log = /proc/self/fd/2"
echo "[www]"
echo "access.log = /proc/self/fd/2"
} > "${conf_logfile}"
} > "${php_fpm_conf}"
{
echo "error_log = /proc/self/fd/2"
} > "${php_ini_conf}"
}
_log_to_files() {
local conf_logfile="${1}"
local log_dir="${2}"
local user="${3}"
local group="${4}"
local debug="${5}"
local php_fpm_conf="${1}"
local php_ini_conf="${2}"
local log_dir="${3}"
local user="${4}"
local group="${5}"
local debug="${6}"
# Create Log directory and files
if [ ! -d "${log_dir}" ]; then
@@ -43,7 +48,10 @@ _log_to_files() {
echo "error_log = ${log_dir}/php-fpm.error"
echo "[www]"
echo "access.log = ${log_dir}/php-fpm.access"
} > "${conf_logfile}"
} > "${php_fpm_conf}"
{
echo "error_log = ${log_dir}/php-fpm.error"
} > "${php_ini_conf}"
}
@@ -77,17 +85,18 @@ is_docker_logs_enabled() {
set_docker_logs() {
local env_varname="${1}"
local log_dir="${2}"
local conf_logfile="${3}"
local user="${4}"
local group="${5}"
local debug="${6}"
local php_fpm_conf="${3}"
local php_ini_conf="${4}"
local user="${5}"
local group="${6}"
local debug="${7}"
local docker_logs=
if ! env_set "${env_varname}"; then
log "info" "\$${env_varname} not set." "${debug}"
log "info" "Logging to docker logs (stdout and stderr)." "${debug}"
_log_to_dockerlogs "${conf_logfile}"
_log_to_dockerlogs "${php_fpm_conf}" "${php_ini_conf}"
else
docker_logs="$( env_get "${env_varname}" )"
@@ -95,12 +104,12 @@ set_docker_logs() {
if [ "${docker_logs}" = "0" ]; then
log "info" "\$${env_varname} set to 0. Logging to files under: ${log_dir}" "${debug}"
log "info" "Make sure to mount this directory in order to view logs" "${debug}"
_log_to_files "${conf_logfile}" "${log_dir}" "${user}" "${group}" "${debug}"
_log_to_files "${php_fpm_conf}" "${php_ini_conf}" "${log_dir}" "${user}" "${group}" "${debug}"
# Keep docker logs
elif [ "${docker_logs}" = "1" ]; then
log "info" "\$${env_varname} set to 1. Logging to docker logs (stdout and stderr)." "${debug}"
_log_to_dockerlogs "${conf_logfile}"
_log_to_dockerlogs "${php_fpm_conf}" "${php_ini_conf}"
else
log "err" "Invalid value for \$${env_varname}. Can only be 0 or 1. Provided: ${docker_logs}" "${debug}"
exit 1

View File

@@ -27,8 +27,8 @@ copy_ini_files() {
'
for ini_f in ${ini_files}; do
ini_name="$( basename "${ini_f}" )"
log "info" "PHP.ini: ${ini_name} -> ${ini_dst}/zzz-devilbox-${ini_name}" "${debug}"
run "cp ${ini_f} ${ini_dst}/zzz-devilbox-${ini_name}" "${debug}"
log "info" "PHP.ini: ${ini_name} -> ${ini_dst}/yyy-devilbox-user-runtime-${ini_name}" "${debug}"
run "cp ${ini_f} ${ini_dst}/yyy-devilbox-user-runtime-${ini_name}" "${debug}"
done
run "find ${ini_dst} -type f -iname '*.ini' -exec chmod 0644 \"{}\" \;" "${debug}"
}

View File

@@ -27,12 +27,28 @@ copy_fpm_files() {
'
for fpm_f in ${fpm_files}; do
fpm_name="$( basename "${fpm_f}" )"
log "info" "PHP-FPM.conf: ${fpm_name} -> ${fpm_dst}/zzz-devilbox-${fpm_name}" "${debug}"
run "cp ${fpm_f} ${fpm_dst}/zzz-devilbox-${fpm_name}" "${debug}"
log "info" "PHP-FPM.conf: ${fpm_name} -> ${fpm_dst}/yyy-devilbox-user-runtime-${fpm_name}" "${debug}"
run "cp ${fpm_f} ${fpm_dst}/yyy-devilbox-user-runtime-${fpm_name}" "${debug}"
done
run "find ${fpm_dst} -type f -iname '*.conf' -exec chmod 0644 \"{}\" \;" "${debug}"
}
###
### Copy php-fpm.conf for PHP 5.2
### Note: PHP 5.2 does not allow includes and comes in XML format,
### we must therefore copy the file to its main file /usr/local/etc/php-fpm.conf
###
copy_fpm_5_2_conf_file() {
local fpm_src="${1}"
local fpm_dst="/usr/local/etc/php-fpm.conf"
local debug="${2}"
if [ -f "${fpm_src}" ]; then
log "info" "PHP-FPM.conf (PHP 5.2): php-fpm.xml -> ${fpm_dst}" "${debug}"
run "cp ${fpm_src} ${fpm_dst}" "${debug}"
fi
}
############################################################
# Sanity Checks

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# PHP FPM 5.3 does not allow to pass through environment variables
# PHP FPM 5.2 and PHP-FPM 5.3 do not allow to pass through environment variables
# This is a hacky shell script to create:
# env[NAME]='VALUE' entries for PHP FPM config out of all current env vars

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
############################################################
# Functions
############################################################
###
### Enable PHP Modules
###
enable_modules() {
local mod_varname="${1}"
local debug="${2}"
local cfg_path="/usr/local/etc/php/conf.d"
local mod_path=
mod_path="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )"
if ! env_set "${mod_varname}"; then
log "info" "\$${mod_varname} not set. Not enabling any PHP modules." "${debug}"
else
mods="$( env_get "${mod_varname}" )"
if [ -z "${mods}" ]; then
log "info" "\$${mod_varname} set, but empty. Not enabling any PHP modules." "${debug}"
return 0
fi
log "info" "Enabling the following PHP modules: ${mods}" "${debug}"
while read -r mod; do
mod="$( echo "${mod}" | xargs )" # trim
# Does the module exist?
if [ -f "${mod_path}/${mod}.so" ]; then
# Exceptions to load speficially
if [ "${mod}" = "ioncube" ]; then
run "echo 'zend_extension=${mod_path}/ioncube.so' > '${cfg_path}/docker-ext-php-ext-ioncube.ini'" "${debug}"
# Generic Load
else
run "docker-php-ext-enable ${mod} || true" "${debug}"
fi
else
log "warn" "Enabling PHP Module: '${mod}' does not exist" "${debug}"
fi
done <<< "$( echo "${mods}" | tr ',' '\n' )"
fi
}

View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
############################################################
# Functions
############################################################
###
### Disable PHP Modules
###
disable_modules() {
local mod_varname="${1}"
local debug="${2}"
local cfg_path="/usr/local/etc/php/conf.d"
if ! env_set "${mod_varname}"; then
log "info" "\$${mod_varname} not set. Not disabling any PHP modules." "${debug}"
else
mods="$( env_get "${mod_varname}" )"
if [ -z "${mods}" ]; then
log "info" "\$${mod_varname} set, but empty. Not disabling any PHP modules." "${debug}"
return 0
fi
log "info" "Disabling the following PHP modules: ${mods}" "${debug}"
while read -r mod; do
mod="$( echo "${mod}" | xargs )" # trim
# Find all config files that enable that module
files="$( grep -Er "^(zend_)?extension.*(=|/)${mod}\.so" "${cfg_path}" || true )"
if [ -n "${files}" ]; then
while read -r f; do
# Get filename
f="$( echo "${f}" | awk -F':' '{ print $1 }' )"
# Remove file
run "rm ${f}" "${debug}"
done <<< "${files}"
fi
done <<< "$( echo "${mods}" | tr ',' '\n' )"
fi
}

View File

@@ -28,7 +28,8 @@ PHP_FPM_DIR="/usr/local/etc/php-fpm.d"
PHP_MAIL_LOG="/var/log/mail.log"
# This file holds error and access log definitions
FPM_CONF_LOGFILE="/usr/local/etc/php-fpm.d/logfiles.conf"
PHP_FPM_CONF_LOGFILE="${PHP_FPM_DIR}/zzz-entrypoint-logfiles.conf"
PHP_INI_CONF_LOGFILE="${PHP_INI_DIR}/zzz-entrypoint-logfiles.ini"
# PHP-FPM log dir
FPM_LOG_DIR="/var/log/php"
@@ -79,9 +80,9 @@ set_timezone "TIMEZONE" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
###
### PHP-FPM 5.3 Env variables
### PHP-FPM 5.2 and PHP-FPM 5.3 Env variables fix
###
if php -v 2>/dev/null | grep -Eoq '^PHP[[:space:]]5\.3'; then
if php -v 2>/dev/null | grep -Eoq '^PHP[[:space:]]5\.(2|3)'; then
set_env_php_fpm "/usr/local/etc/php-fpm.d/env.conf"
fi
@@ -92,7 +93,8 @@ fi
set_docker_logs \
"DOCKER_LOGS" \
"${FPM_LOG_DIR}" \
"${FPM_CONF_LOGFILE}" \
"${PHP_FPM_CONF_LOGFILE}" \
"${PHP_INI_CONF_LOGFILE}" \
"${MY_USER}" \
"${MY_GROUP}" \
"${DEBUG_LEVEL}"
@@ -157,7 +159,23 @@ copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
###
### Copy custom PHP-FPM *.conf files
###
copy_fpm_files "${PHP_CUST_FPM_DIR}" "${PHP_FPM_DIR}" "${DEBUG_LEVEL}"
if [ "${PHP_VERSION}" = "5.2" ]; then
copy_fpm_5_2_conf_file "${PHP_CUST_FPM_DIR}/php-fpm.xml" "${DEBUG_LEVEL}"
else
copy_fpm_files "${PHP_CUST_FPM_DIR}" "${PHP_FPM_DIR}" "${DEBUG_LEVEL}"
fi
###
### Enable PHP Modules
###
enable_modules "ENABLE_MODULES" "${DEBUG_LEVEL}"
###
### Disable PHP Modules
###
disable_modules "DISABLE_MODULES" "${DEBUG_LEVEL}"
###

View File

@@ -0,0 +1,347 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead.
FROM devilbox/php-fpm:5.2-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org>
###
### Labels
###
LABEL \
name="cytopia's PHP-FPM 5.2 Image" \
image="devilbox/php-fpm" \
tag="5.2-work" \
vendor="devilbox" \
license="MIT"
###
### Envs
###
ENV BASH_PROFILE=".bashrc"
###
### Install Tools
###
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \
&& echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -q "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | apt-key add - \
&& echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \
&& curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
dnsutils \
dos2unix \
file \
gcc \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \
mysql-client \
nano \
net-tools \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
silversearcher-ag \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
&& git checkout $(git describe --abbrev=0 --tags) \
&& ./configure --prefix=/usr/local \
&& make install \
&& cd / \
&& rm -rf /usr/local/src/awesome-ci \
\
&& gem install mixlib-config -v 2.2.4 \
&& gem install mdl \
&& gem install scss_lint \
&& npm install -g eslint \
&& npm install -g jsonlint \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# gitflow
&& git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \
&& cd /tmp/gitflow \
&& make install \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
&& git checkout $(git describe --abbrev=0 --tags) \
&& cp /usr/local/src/mysqldump-secure/bin/mysqldump-secure /usr/local/bin \
&& cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.conf /etc \
&& cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.cnf /etc \
&& touch /var/log/mysqldump-secure.log \
&& chown ${MY_USER}:${MY_GROUP} /etc/mysqldump-secure.* \
&& chown ${MY_USER}:${MY_GROUP} /var/log/mysqldump-secure.log \
&& chmod 0400 /etc/mysqldump-secure.conf \
&& chmod 0400 /etc/mysqldump-secure.cnf \
&& chmod 0644 /var/log/mysqldump-secure.log \
&& sed -i'' 's/^COMPRESS_ARG=.*/COMPRESS_ARG="-9 -c"/g' /etc/mysqldump-secure.conf \
&& sed -i'' 's/^DUMP_DIR=.*/DUMP_DIR="\/shared\/backups\/mysql"/g' /etc/mysqldump-secure.conf \
&& sed -i'' 's/^DUMP_DIR_CHMOD=.*/DUMP_DIR_CHMOD="0755"/g' /etc/mysqldump-secure.conf \
&& sed -i'' 's/^DUMP_FILE_CHMOD=.*/DUMP_FILE_CHMOD="0644"/g' /etc/mysqldump-secure.conf \
&& sed -i'' 's/^LOG_CHMOD=.*/LOG_CHMOD="0644"/g' /etc/mysqldump-secure.conf \
&& sed -i'' 's/^NAGIOS_LOG=.*/NAGIOS_LOG=0/g' /etc/mysqldump-secure.conf \
&& cd / \
&& rm -rf /usr/local/src/mysqldump-secure \
\
# phpcs
&& curl -qL https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \
&& chmod +x /usr/local/bin/phpcs \
\
# phpcbf
&& curl -qL https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# sass
&& gem install sass \
# webpack
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# yamllint
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.gem \
&& rm -rf /home/${MY_USER}/.npm \
&& rm -rf /home/${MY_USER}/.subversion \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.gem \
&& rm -rf /root/.npm \
&& rm -rf /root/.subversion \
\
&& rm -rf /tmp/* \
\
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
### Configure Bash
###
RUN \
{ \
echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \
echo "export PATH"; \
echo ". /etc/bash-devilbox"; \
echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \
echo " for f in /etc/bashrc-devilbox.d/*.sh ; do"; \
echo " if [ -r \"\${f}\" ]; then"; \
echo " . \"\${f}\""; \
echo " fi"; \
echo " done"; \
echo " unset f"; \
echo "fi"; \
} | tee -a /home/${MY_USER}/${BASH_PROFILE} /root/${BASH_PROFILE} \
&& chown ${MY_USER}:${MY_GROUP} /home/${MY_USER}/${BASH_PROFILE}
###
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
&& jsonlint --version | grep -E '[.0-9]+' \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& webpack --version | grep -E '[.0-9]+' \
&& yamllint --version 2>&1 | grep -E '[.0-9]+' \
&& true
###
### Copy files
###
COPY ./data/php-ini.d/php-5.2.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.2.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###
VOLUME /etc/bashrc-devilbox.d
VOLUME /etc/php-custom.d
VOLUME /etc/php-fpm-custom.d
VOLUME /etc/php-modules.d
VOLUME /shared/backups
VOLUME /var/log/php
VOLUME /var/mail
###
### Ports
###
EXPOSE 9000
###
### Where to start inside the container
###
WORKDIR /shared/httpd
###
### Entrypoint
###
ENTRYPOINT ["/docker-entrypoint.sh"]

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,36 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +141,22 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# gitflow
&& git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \
@@ -133,19 +165,30 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -187,17 +230,27 @@ RUN set -x \
&& curl -qL https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# sass
&& gem install sass \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& curl https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -219,7 +272,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -246,13 +304,24 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -260,14 +329,17 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& webpack --version | grep -E '[.0-9]+' \
&& wp --allow-root --version | grep -E '[.0-9]+' \
@@ -278,13 +350,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-5.3.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.3.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,36 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +141,38 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep ^8 | tail -1) \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# gitflow
&& git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \
@@ -133,29 +181,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout v1.3.7 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -197,20 +256,30 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# sass
&& gem install sass \
# symfony
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -232,7 +301,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -259,13 +333,24 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.4' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -273,15 +358,20 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
&& webpack --version | grep -E '[.0-9]+' \
@@ -293,13 +383,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-5.4.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.4.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,38 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep ^8 | tail -1) \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +188,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout v2.0.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -200,6 +263,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-4.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -210,14 +277,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -239,7 +312,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -266,13 +344,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.5' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -280,16 +370,21 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -302,13 +397,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-5.5.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.5.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,51 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drush9
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \
&& cd /usr/local/src/drush9 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \
&& rm -rf /usr/local/src/drush9/.git \
&& rm -rf /usr/local/src/drush9/docs \
&& rm -rf /usr/local/src/drush9/examples \
&& rm -rf /usr/local/src/drush9/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +201,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout v2.0.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -200,6 +276,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-5.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -210,14 +290,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -239,7 +325,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -266,13 +357,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.6' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -280,16 +383,22 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drush9 --version | grep -E '9[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -302,13 +411,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-5.6.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-5.6.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,51 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drush9
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \
&& cd /usr/local/src/drush9 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \
&& rm -rf /usr/local/src/drush9/.git \
&& rm -rf /usr/local/src/drush9/docs \
&& rm -rf /usr/local/src/drush9/examples \
&& rm -rf /usr/local/src/drush9/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +201,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout v2.0.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -200,6 +276,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-6.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -210,14 +290,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -239,7 +325,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -266,13 +357,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.0' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -280,16 +383,22 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drush9 --version | grep -E '9[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -302,13 +411,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-7.0.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.0.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,51 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drush9
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \
&& cd /usr/local/src/drush9 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \
&& rm -rf /usr/local/src/drush9/.git \
&& rm -rf /usr/local/src/drush9/docs \
&& rm -rf /usr/local/src/drush9/examples \
&& rm -rf /usr/local/src/drush9/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +201,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout $(git describe --abbrev=0 --tags) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -200,6 +276,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -210,14 +290,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -239,7 +325,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -266,13 +357,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.1' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -280,16 +383,22 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drush9 --version | grep -E '9[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -302,13 +411,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-7.1.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.1.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,51 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drush9
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \
&& cd /usr/local/src/drush9 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \
&& rm -rf /usr/local/src/drush9/.git \
&& rm -rf /usr/local/src/drush9/docs \
&& rm -rf /usr/local/src/drush9/examples \
&& rm -rf /usr/local/src/drush9/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +201,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout $(git describe --abbrev=0 --tags) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -200,6 +276,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -210,14 +290,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -239,7 +325,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -266,13 +357,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.2' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -280,16 +383,22 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drush9 --version | grep -E '9[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phalcon commands | grep -E '[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -302,13 +411,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-7.2.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.2.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -24,8 +24,9 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
&& echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
@@ -39,13 +40,14 @@ RUN set -x \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -56,12 +58,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -72,9 +79,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -82,19 +94,40 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
# composer
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
# ansible
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
&& /usr/local/bin/pip install --no-cache-dir ansible \
\
# asgardcms
&& COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \
&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \
\
# awesomeci
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \
@@ -112,19 +145,51 @@ RUN set -x \
&& npm install -g mdlint \
&& npm install -g gulp \
\
# drush
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush \
&& cd /usr/local/src/drush \
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') \
# codeception
&& COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \
&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush && composer install --no-interaction --no-progress' \
&& ln -s /usr/local/src/drush/drush /usr/local/bin/drush \
&& rm -rf /usr/local/src/drush/.git \
&& rm -rf /usr/local/src/drush/docs \
&& rm -rf /usr/local/src/drush/examples \
&& rm -rf /usr/local/src/drush/misc \
&& rm -rf /usr/local/src/drush/tests \
# deployer
&& curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep \
# drush7
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \
&& cd /usr/local/src/drush7 \
&& git checkout 7.4.0 \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \
&& rm -rf /usr/local/src/drush7/.git \
&& rm -rf /usr/local/src/drush7/docs \
&& rm -rf /usr/local/src/drush7/examples \
&& rm -rf /usr/local/src/drush7/misc \
\
# drush8
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \
&& cd /usr/local/src/drush8 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \
&& rm -rf /usr/local/src/drush8/.git \
&& rm -rf /usr/local/src/drush8/docs \
&& rm -rf /usr/local/src/drush8/examples \
&& rm -rf /usr/local/src/drush8/misc \
\
# drush9
&& git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \
&& cd /usr/local/src/drush9 \
&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \
&& rm -rf /usr/local/src/drush9/.git \
&& rm -rf /usr/local/src/drush9/docs \
&& rm -rf /usr/local/src/drush9/examples \
&& rm -rf /usr/local/src/drush9/misc \
\
# drupalconsole
&& curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \
@@ -136,29 +201,40 @@ RUN set -x \
&& cd / && rm -rf /tmp/gitflow \
\
# grunt
&& npm install -g grunt grunt-cli \
&& npm install -g grunt \
&& npm install -g grunt-cli \
\
# laravel
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \
&& git checkout $(git describe --abbrev=0 --tags) \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install' \
&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \
&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \
&& rm -rf /usr/local/src/laravel-installer/laravel/.git \
\
# linkcheck
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
\
# linuxbrew
&& git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew update' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
\
# mhsendmail
&& wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \
&& chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \
\
# mysqldumpsecure
&& git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \
&& cd /usr/local/src/mysqldump-secure \
@@ -189,6 +265,10 @@ RUN set -x \
&& curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
&& chmod +x /usr/local/bin/phpcbf \
\
# phpunit
&& curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \
&& chmod +x /usr/local/bin/phpunit \
\
# photon
&& COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \
&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \
@@ -199,14 +279,20 @@ RUN set -x \
&& curl https://symfony.com/installer -L -o /usr/local/bin/symfony \
&& chmod +x /usr/local/bin/symfony \
# webpack
&& npm install -g webpack webpack-cli \
&& npm install -g webpack \
&& npm install -g webpack-cli \
\
# wpcli
&& curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \
# yamllint
&& apt update && apt install --no-install-recommends --no-install-suggests -y libpython-dev python-setuptools libyaml-dev \
&& pip install yamllint \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps libpython-dev python-setuptools libyaml-dev && rm -rf /var/lib/apt/lists/* \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
\
&& /usr/local/bin/pip install --no-cache-dir yamllint \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
&& rm -rf /var/lib/apt/lists/* \
\
# cleanup
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
@@ -228,7 +314,12 @@ RUN set -x \
\
&& rm -rf /tmp/* \
\
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -255,13 +346,25 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^7.3' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
&& composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \
&& ansible --version | grep -E '^ansible [.0-9]+$' \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' \
&& mdl --version | grep -E '[.0-9]+' \
&& scss-lint --version | grep -E '[.0-9]+' \
&& eslint -v | grep -E '[.0-9]+' \
@@ -269,15 +372,21 @@ RUN set -x \
&& mdlint --version | grep -E '[.0-9]+' \
&& gulp --version | grep -E '[.0-9]+' \
\
&& drush --version | grep -E '[.0-9]+' \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \
&& dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \
&& drush8 --version | grep -E '8[.0-9]+\s*$' \
&& drush9 --version | grep -E '9[.0-9]+\s*$' \
&& drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \
&& git-flow version | grep -E '[.0-9]+' \
&& grunt --version | grep -E '[.0-9]+' \
&& laravel --version | grep -E '(Installer|version)\s*[.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
&& phpcs --version | grep -E 'version [.0-9]+' \
&& phpcbf --version | grep -E 'version [.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \
&& photon --version | grep -E 'Installer [.0-9]+' \
&& sass --version | grep -E '[.0-9]+' \
&& symfony --version | grep -E 'version\s*[.0-9]+' \
@@ -290,13 +399,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-7.3.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-7.3.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

View File

@@ -15,7 +15,15 @@ alias ll='ls -alp --color=always --group-directories-first'
alias ..='cd ..'
# Nice PS1
PS1="\[\e[0;31m\]$(whoami)\[\e[0m\]@\[\e[0;36m\]php-$(php -v|head -1|grep -Eo '[0-9.]+'|head -1)\[\e[0m\] in \[\e[0;34m\]\w \[\e[0m\]\$ "
_clr_usr='\[\e[0;31m\]'
_clr_ver='\[\e[0;36m\]'
_clr_dir='\[\e[0;34m\]'
_clr_off='\[\e[0m\]'
PS1_PHP="$( php -v 2>/dev/null | grep -Eo '^PHP\s([-_.a-z0-9])+' )"
PS1_PHP="${PS1_PHP//PHP[[:space:]]}"
PS1_USR="$( whoami )"
PS1="${_clr_usr}${PS1_USR}${_clr_off}@${_clr_ver}php-${PS1_PHP}${_clr_off} in ${_clr_dir}\w${_clr_off} \$ "
# Show Intro
echo

View File

@@ -28,7 +28,8 @@ PHP_FPM_DIR="/usr/local/etc/php-fpm.d"
PHP_MAIL_LOG="/var/log/mail.log"
# This file holds error and access log definitions
FPM_CONF_LOGFILE="/usr/local/etc/php-fpm.d/logfiles.conf"
PHP_FPM_CONF_LOGFILE="${PHP_FPM_DIR}/zzz-entrypoint-logfiles.conf"
PHP_INI_CONF_LOGFILE="${PHP_INI_DIR}/zzz-entrypoint-logfiles.ini"
# PHP-FPM log dir
FPM_LOG_DIR="/var/log/php"
@@ -79,9 +80,9 @@ set_timezone "TIMEZONE" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
###
### PHP-FPM 5.3 Env variables
### PHP-FPM 5.2 and PHP-FPM 5.3 Env variables fix
###
if php -v 2>/dev/null | grep -Eoq '^PHP[[:space:]]5\.3'; then
if php -v 2>/dev/null | grep -Eoq '^PHP[[:space:]]5\.(2|3)'; then
set_env_php_fpm "/usr/local/etc/php-fpm.d/env.conf"
fi
@@ -92,7 +93,8 @@ fi
set_docker_logs \
"DOCKER_LOGS" \
"${FPM_LOG_DIR}" \
"${FPM_CONF_LOGFILE}" \
"${PHP_FPM_CONF_LOGFILE}" \
"${PHP_INI_CONF_LOGFILE}" \
"${MY_USER}" \
"${MY_GROUP}" \
"${DEBUG_LEVEL}"
@@ -157,7 +159,23 @@ copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
###
### Copy custom PHP-FPM *.conf files
###
if [ "${PHP_VERSION}" = "5.2" ]; then
copy_fpm_5_2_conf_file "${PHP_CUST_FPM_DIR}/php-fpm.xml" "${DEBUG_LEVEL}"
else
copy_fpm_files "${PHP_CUST_FPM_DIR}" "${PHP_FPM_DIR}" "${DEBUG_LEVEL}"
fi
###
### Enable PHP Modules
###
enable_modules "ENABLE_MODULES" "${DEBUG_LEVEL}"
###
### Disable PHP Modules
###
disable_modules "DISABLE_MODULES" "${DEBUG_LEVEL}"
###

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" ?>
<configuration>
All relative paths in this config are relative to php's install prefix
<section name="global_options">
Pid file
<value name="pid_file">/var/run/php-fpm.pid</value>
Error log file
<value name="error_log">/proc/self/fd/2</value>
Log level
<value name="log_level">notice</value>
When this amount of php processes exited with SIGSEGV or SIGBUS ...
<value name="emergency_restart_threshold">10</value>
... in a less than this interval of time, a graceful restart will be initiated.
Useful to work around accidental curruptions in accelerator's shared memory.
<value name="emergency_restart_interval">1m</value>
Time limit on waiting child's reaction on signals from master
<value name="process_control_timeout">5s</value>
Set to 'no' to debug fpm
<value name="daemonize">no</value>
</section>
<workers>
<section name="pool">
Name of pool. Used in logs and stats.
<value name="name">www</value>
Address to accept fastcgi requests on.
Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
<value name="listen_address">0.0.0.0:9000</value>
<value name="listen_options">
Set listen(2) backlog
<value name="backlog">1024</value>
Set permissions for unix socket, if one used.
In Linux read/write permissions must be set in order to allow connections from web server.
Many BSD-derrived systems allow connections regardless of permissions.
<value name="owner"></value>
<value name="group"></value>
<value name="mode">0666</value>
</value>
Additional php.ini defines, specific to this pool of workers.
<value name="php_defines">
<value name="error_reporting">-1</value>
<value name="xmlrpc_errors">0</value>
<value name="report_memleaks">1</value>
<value name="display_errors">1</value>
<value name="display_startup_errors">1</value>
<value name="track_errors">1</value>
<value name="log_errors">1</value>
<value name="html_errors">1</value>
</value>
Unix user of processes
<value name="user">devilbox</value>
Unix group of processes
<value name="group">devilbox</value>
Process manager settings
<value name="pm">
Sets style of controling worker process count.
Valid values are 'static' and 'apache-like'
<value name="style">apache-like</value>
Sets the limit on the number of simultaneous requests that will be served.
Equivalent to Apache MaxClients directive.
Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
Used with any pm_style.
<!--<value name="max_children">50</value>-->
<value name="max_children">5</value>
Settings group for 'apache-like' pm style
<value name="apache_like">
Sets the number of server processes created on startup.
Used only when 'apache-like' pm_style is selected
<!--<value name="StartServers">4</value>-->
<value name="StartServers">3</value>
Sets the desired minimum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MinSpareServers">2</value>-->
<value name="MinSpareServers">2</value>
Sets the desired maximum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MaxSpareServers">6</value>-->
<value name="MaxSpareServers">4</value>
</value>
</value>
The timeout (in seconds) for serving a single request after which the worker process will be terminated
Should be used when 'max_execution_time' ini option does not stop script execution for some reason
'0s' means 'off'
<value name="request_terminate_timeout">120s</value>
The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
'0s' means 'off'
<value name="request_slowlog_timeout">0s</value>
The log file for slow requests
<value name="slowlog">/proc/self/fd/2</value>
Set open file desc rlimit
<value name="rlimit_files">1024</value>
Set max core size rlimit
<value name="rlimit_core">0</value>
Chroot to this directory at the start, absolute path
<value name="chroot"></value>
Chdir to this directory at the start, absolute path
<value name="chdir"></value>
Redirect workers' stdout and stderr into main error log.
If not set, they will be redirected to /dev/null, according to FastCGI specs
<value name="catch_workers_output">yes</value>
How much requests each process should execute before respawn.
Useful to work around memory leaks in 3rd party libraries.
For endless request processing please specify 0
Equivalent to PHP_FCGI_MAX_REQUESTS
<value name="max_requests">500</value>
Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
Makes sense only with AF_INET listening socket.
<!-- <value name="allowed_clients">127.0.0.1</value> -->
Pass environment variables like LD_LIBRARY_PATH
All $VARIABLEs are taken from current environment
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers>
</configuration>

View File

@@ -0,0 +1,132 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,134 @@
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = 120s
; ############################################################
; Logging
; ############################################################
[global]
error_log = /proc/self/fd/2
log_level = notice
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = 1024
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = ondemand
; The maximum number of child processes to be created
pm.max_children = 50
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = 4
; The desired minimum number of idle server processes.
pm.min_spare_servers = 2
; The desired maximum number of idle server processes.
pm.max_spare_servers = 6
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = 500
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = 10s
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
; Keep env variables set by docker
clear_env = no
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes
; ############################################################
; User and Group
; ############################################################
[www]
user = devilbox
group = devilbox
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = 9000

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 5.2-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 5.3-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.4-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.5-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 5.6-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 7.0-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,50 @@
; ############################################################
; # Devilbox PHP defaults for 7.1-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
track_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 7.2-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -0,0 +1,49 @@
; ############################################################
; # Devilbox PHP defaults for 7.3-work
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = 512M
; Timeouts
max_execution_time = 120
max_input_time = 120
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = 72M
upload_max_filesize = 64M
max_file_uploads = 20
; Vars
variables_order = EGPCS
max_input_vars = 8000
max_input_nesting_level = 64
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED
xmlrpc_errors = Off
report_memleaks = On
display_errors = On
display_startup_errors = On
log_errors = On
html_errors = On
; Xdebug settings
xdebug.default_enable = Off
xdebug.profiler_enable = Off
xdebug.remote_enable = Off
xdebug.remote_autostart = Off

View File

@@ -1,12 +0,0 @@
; PHP Development configuration for errors
; Show all errors
display_errors = On
display_startup_errors = On
; Log all errors
log_errors = On
; What errors to show/log
error_reporting = E_ALL | E_STRICT
xmlrpc_errors = On

View File

@@ -27,6 +27,7 @@ help:
@printf "%s\n" "make rebuild-prod: Rebuild all prod images"
@printf "%s\n" "make rebuild-work: Rebuild all work images"
@printf "\n"
@printf "%s\n" "make build-base-52: Build PHP 5.2 base image"
@printf "%s\n" "make build-base-53: Build PHP 5.3 base image"
@printf "%s\n" "make build-base-54: Build PHP 5.4 base image"
@printf "%s\n" "make build-base-55: Build PHP 5.5 base image"
@@ -36,6 +37,7 @@ help:
@printf "%s\n" "make build-base-72: Build PHP 7.2 base image"
@printf "%s\n" "make build-base-73: Build PHP 7.3 base image"
@printf "\n"
@printf "%s\n" "make build-mods-52: Build PHP 5.2 mods image"
@printf "%s\n" "make build-mods-53: Build PHP 5.3 mods image"
@printf "%s\n" "make build-mods-54: Build PHP 5.4 mods image"
@printf "%s\n" "make build-mods-55: Build PHP 5.5 mods image"
@@ -45,6 +47,7 @@ help:
@printf "%s\n" "make build-mods-72: Build PHP 7.2 mods image"
@printf "%s\n" "make build-mods-73: Build PHP 7.3 mods image"
@printf "\n"
@printf "%s\n" "make build-prod-52: Build PHP 5.2 prod image"
@printf "%s\n" "make build-prod-53: Build PHP 5.3 prod image"
@printf "%s\n" "make build-prod-54: Build PHP 5.4 prod image"
@printf "%s\n" "make build-prod-55: Build PHP 5.5 prod image"
@@ -54,7 +57,8 @@ help:
@printf "%s\n" "make build-prod-72: Build PHP 7.2 prod image"
@printf "%s\n" "make build-prod-73: Build PHP 7.3 prod image"
@printf "\n"
@printf "%s\n" "make build-work-54: Build PHP 5.3 work image"
@printf "%s\n" "make build-work-52: Build PHP 5.2 work image"
@printf "%s\n" "make build-work-53: Build PHP 5.3 work image"
@printf "%s\n" "make build-work-54: Build PHP 5.4 work image"
@printf "%s\n" "make build-work-55: Build PHP 5.5 work image"
@printf "%s\n" "make build-work-56: Build PHP 5.6 work image"
@@ -63,6 +67,7 @@ help:
@printf "%s\n" "make build-work-72: Build PHP 7.2 work image"
@printf "%s\n" "make build-work-73: Build PHP 7.3 work image"
@printf "\n"
@printf "%s\n" "make rebuild-base-52: Build PHP 5.2 base image"
@printf "%s\n" "make rebuild-base-53: Build PHP 5.3 base image"
@printf "%s\n" "make rebuild-base-54: Build PHP 5.4 base image"
@printf "%s\n" "make rebuild-base-55: Build PHP 5.5 base image"
@@ -72,6 +77,7 @@ help:
@printf "%s\n" "make rebuild-base-72: Build PHP 7.2 base image"
@printf "%s\n" "make rebuild-base-73: Build PHP 7.3 base image"
@printf "\n"
@printf "%s\n" "make rebuild-mods-52: Build PHP 5.2 mods image"
@printf "%s\n" "make rebuild-mods-53: Build PHP 5.3 mods image"
@printf "%s\n" "make rebuild-mods-54: Build PHP 5.4 mods image"
@printf "%s\n" "make rebuild-mods-55: Build PHP 5.5 mods image"
@@ -81,6 +87,7 @@ help:
@printf "%s\n" "make rebuild-mods-72: Build PHP 7.2 mods image"
@printf "%s\n" "make rebuild-mods-73: Build PHP 7.3 mods image"
@printf "\n"
@printf "%s\n" "make rebuild-prod-52: Build PHP 5.2 prod image"
@printf "%s\n" "make rebuild-prod-53: Build PHP 5.3 prod image"
@printf "%s\n" "make rebuild-prod-54: Build PHP 5.4 prod image"
@printf "%s\n" "make rebuild-prod-55: Build PHP 5.5 prod image"
@@ -90,6 +97,7 @@ help:
@printf "%s\n" "make rebuild-prod-72: Build PHP 7.2 prod image"
@printf "%s\n" "make rebuild-prod-73: Build PHP 7.3 prod image"
@printf "\n"
@printf "%s\n" "make rebuild-work-52: Build PHP 5.2 work image"
@printf "%s\n" "make rebuild-work-53: Build PHP 5.3 work image"
@printf "%s\n" "make rebuild-work-54: Build PHP 5.4 work image"
@printf "%s\n" "make rebuild-work-55: Build PHP 5.5 work image"
@@ -133,21 +141,23 @@ rebuild-all: rebuild-base rebuild-mods rebuild-prod rebuild-work
###
### Build categories
###
build-base: build-base-53 build-base-54 build-base-55 build-base-56 build-base-70 build-base-71 build-base-72 build-base-73
build-mods: build-mods-53 build-mods-54 build-mods-55 build-mods-56 build-mods-70 build-mods-71 build-mods-72 build-mods-73
build-prod: build-prod-53 build-prod-54 build-prod-55 build-prod-56 build-prod-70 build-prod-71 build-prod-72 build-prod-73
build-work: build-work-53 build-work-54 build-work-55 build-work-56 build-work-70 build-work-71 build-work-72 build-work-73
build-base: build-base-52 build-base-53 build-base-54 build-base-55 build-base-56 build-base-70 build-base-71 build-base-72 build-base-73
build-mods: build-mods-52 build-mods-53 build-mods-54 build-mods-55 build-mods-56 build-mods-70 build-mods-71 build-mods-72 build-mods-73
build-prod: build-prod-52 build-prod-53 build-prod-54 build-prod-55 build-prod-56 build-prod-70 build-prod-71 build-prod-72 build-prod-73
build-work: build-work-52 build-work-53 build-work-54 build-work-55 build-work-56 build-work-70 build-work-71 build-work-72 build-work-73
rebuild-base: rebuild-base-53 rebuild-base-54 rebuild-base-55 rebuild-base-56 rebuild-base-70 rebuild-base-71 rebuild-base-72 rebuild-base-73
rebuild-mods: rebuild-mods-53 rebuild-mods-54 rebuild-mods-55 rebuild-mods-56 rebuild-mods-70 rebuild-mods-71 rebuild-mods-72 rebuild-mods-73
rebuild-prod: rebuild-prod-53 rebuild-prod-54 rebuild-prod-55 rebuild-prod-56 rebuild-prod-70 rebuild-prod-71 rebuild-prod-72 rebuild-prod-73
rebuild-work: rebuild-work-53 rebuild-work-54 rebuild-work-55 rebuild-work-56 rebuild-work-70 rebuild-work-71 rebuild-work-72 rebuild-work-73
rebuild-base: rebuild-base-52 rebuild-base-53 rebuild-base-54 rebuild-base-55 rebuild-base-56 rebuild-base-70 rebuild-base-71 rebuild-base-72 rebuild-base-73
rebuild-mods: rebuild-mods-52 rebuild-mods-53 rebuild-mods-54 rebuild-mods-55 rebuild-mods-56 rebuild-mods-70 rebuild-mods-71 rebuild-mods-72 rebuild-mods-73
rebuild-prod: rebuild-prod-52 rebuild-prod-53 rebuild-prod-54 rebuild-prod-55 rebuild-prod-56 rebuild-prod-70 rebuild-prod-71 rebuild-prod-72 rebuild-prod-73
rebuild-work: rebuild-work-52 rebuild-work-53 rebuild-work-54 rebuild-work-55 rebuild-work-56 rebuild-work-70 rebuild-work-71 rebuild-work-72 rebuild-work-73
###
### Build separately
###
build-base-52: pull-from-52
docker build -t devilbox/php-fpm:5.2-base -f $(location)/base/Dockerfile-5.2 $(location)/base
build-base-53: pull-from-53
docker build -t devilbox/php-fpm:5.3-base -f $(location)/base/Dockerfile-5.3 $(location)/base
build-base-54: pull-from-54
@@ -165,6 +175,8 @@ build-base-72: pull-from-72
build-base-73: pull-from-73
docker build -t devilbox/php-fpm:7.3-base -f $(location)/base/Dockerfile-7.3 $(location)/base
build-mods-52:
docker build -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods
build-mods-53:
docker build -t devilbox/php-fpm:5.3-mods -f $(location)/mods/Dockerfile-5.3 $(location)/mods
build-mods-54:
@@ -182,6 +194,8 @@ build-mods-72:
build-mods-73:
docker build -t devilbox/php-fpm:7.3-mods -f $(location)/mods/Dockerfile-7.3 $(location)/mods
build-prod-52:
docker build -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod
build-prod-53:
docker build -t devilbox/php-fpm:5.3-prod -f $(location)/prod/Dockerfile-5.3 $(location)/prod
build-prod-54:
@@ -199,6 +213,8 @@ build-prod-72:
build-prod-73:
docker build -t devilbox/php-fpm:7.3-prod -f $(location)/prod/Dockerfile-7.3 $(location)/prod
build-work-52:
docker build -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work
build-work-53:
docker build -t devilbox/php-fpm:5.3-work -f $(location)/work/Dockerfile-5.3 $(location)/work
build-work-54:
@@ -221,6 +237,8 @@ build-work-73:
###
### Rebuild separately
###
rebuild-base-52: pull-from-52
docker build --no-cache -t devilbox/php-fpm:5.2-base -f $(location)/base/Dockerfile-5.2 $(location)/base
rebuild-base-53: pull-from-53
docker build --no-cache -t devilbox/php-fpm:5.3-base -f $(location)/base/Dockerfile-5.3 $(location)/base
rebuild-base-54: pull-from-54
@@ -238,6 +256,8 @@ rebuild-base-72: pull-from-72
rebuild-base-73: pull-from-73
docker build --no-cache -t devilbox/php-fpm:7.3-base -f $(location)/base/Dockerfile-7.3 $(location)/base
rebuild-mods-52:
docker build --no-cache -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods
rebuild-mods-53:
docker build --no-cache -t devilbox/php-fpm:5.3-mods -f $(location)/mods/Dockerfile-5.3 $(location)/mods
rebuild-mods-54:
@@ -255,6 +275,8 @@ rebuild-mods-72:
rebuild-mods-73:
docker build --no-cache -t devilbox/php-fpm:7.3-mods -f $(location)/mods/Dockerfile-7.3 $(location)/mods
rebuild-prod-52:
docker build --no-cache -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod
rebuild-prod-53:
docker build --no-cache -t devilbox/php-fpm:5.3-prod -f $(location)/prod/Dockerfile-5.3 $(location)/prod
rebuild-prod-54:
@@ -272,6 +294,8 @@ rebuild-prod-72:
rebuild-prod-73:
docker build --no-cache -t devilbox/php-fpm:7.3-prod -f $(location)/prod/Dockerfile-7.3 $(location)/prod
rebuild-work-52:
docker build --no-cache -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work
rebuild-work-53:
docker build --no-cache -t devilbox/php-fpm:5.3-work -f $(location)/work/Dockerfile-5.3 $(location)/work
rebuild-work-54:
@@ -294,28 +318,42 @@ rebuild-work-73:
###
### Pull base FROM images
###
pull-from-52:
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.2 | sed 's/^FROM\s*//g';)
pull-from-53:
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.3 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.3 | sed 's/^FROM\s*//g';)
pull-from-54:
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.4 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.4 | sed 's/^FROM\s*//g';)
pull-from-55:
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.5 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.5 | sed 's/^FROM\s*//g';)
pull-from-56:
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.6 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-5.6 | sed 's/^FROM\s*//g';)
pull-from-70:
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.0 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.0 | sed 's/^FROM\s*//g';)
pull-from-71:
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.1 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.1 | sed 's/^FROM\s*//g';)
pull-from-72:
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.2 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.2 | sed 's/^FROM\s*//g';)
pull-from-73:
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.3 | sed 's/^FROM//g'; done)
docker pull $(shell grep FROM $(location)/base/Dockerfile-7.3 | sed 's/^FROM\s*//g';)
###
### Test all
###
test-all: test-base test-mods test-prod test-work
test-base: test-base-52 test-base-53 test-base-54 test-base-55 test-base-56 test-base-70 test-base-71 test-base-72 test-base-73
test-mods: test-mods-52 test-mods-53 test-mods-54 test-mods-55 test-mods-56 test-mods-70 test-mods-71 test-mods-72 test-mods-73
test-prod: test-prod-52 test-prod-53 test-prod-54 test-prod-55 test-prod-56 test-prod-70 test-prod-71 test-prod-72 test-prod-73
test-work: test-work-52 test-work-53 test-work-54 test-work-55 test-work-56 test-work-70 test-work-71 test-work-72 test-work-73
###
### Tests
###
test-base-52:
./tests/test.sh 5.2 base
test-base-53:
./tests/test.sh 5.3 base
test-base-54:
@@ -333,6 +371,8 @@ test-base-72:
test-base-73:
./tests/test.sh 7.3 base
test-mods-52:
./tests/test.sh 5.2 mods
test-mods-53:
./tests/test.sh 5.3 mods
test-mods-54:
@@ -350,6 +390,8 @@ test-mods-72:
test-mods-73:
./tests/test.sh 7.3 mods
test-prod-52:
./tests/test.sh 5.2 prod
test-prod-53:
./tests/test.sh 5.3 prod
test-prod-54:
@@ -367,6 +409,8 @@ test-prod-72:
test-prod-73:
./tests/test.sh 7.3 prod
test-work-52:
./tests/test.sh 5.2 work
test-work-53:
./tests/test.sh 5.3 work
test-work-54:

130
README.md
View File

@@ -37,10 +37,11 @@ versions and packed with different types of integrated PHP modules. It also solv
1. [Environment variables](#environment-variables)
2. [Volumes](#volumes)
3. [Ports](#ports)
5. **[Integrated Development Environment](#integrated-development-environment)**
5. **[PHP Default Configuration](#php-default-configuration)**
6. **[Integrated Development Environment](#integrated-development-environment)**
1. [What toos can you expect](#what-tools-can-you-expect)
2. [What else is available](#what-else-is-available)
6. **[Examples](#examples)**
7. **[Examples](#examples)**
1. [Provide PHP-FPM port to host](#provide-php-fpm-port-to-host)
2. [Alter PHP-FPM and system timezone](#alter-php-fpm-and-system-timezone)
3. [Load custom PHP configuration](#load-custom-php-configuration)
@@ -50,10 +51,10 @@ versions and packed with different types of integrated PHP modules. It also solv
7. [Launch Postfix for mail-catching](#launch-postfix-for-mail-catching)
8. [Webserver and PHP-FPM](#webserver-and-php-fpm)
9. [Create MySQL Backups](#create-mysql-backups)
7. **[Automated builds](#automated-builds)**
8. **[Contributing](#contributing)**
9. **[Credits](#credits)**
10. **[License](#license)**
8. **[Automated builds](#automated-builds)**
9. **[Contributing](#contributing)**
10. **[Credits](#credits)**
11. **[License](#license)**
----
@@ -172,12 +173,19 @@ The following table shows a more complete overview about the offered Docker imag
<tbody>
<tr>
<td rowspan="8"><strong>base</strong></td>
<td rowspan="9"><strong>base</strong></td>
<td><code>devilbox/php-fpm:5.2-base</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.2-base.svg" /></a>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/version/devilbox/php-fpm:5.2-base.svg" /></a>
</td>
</tr>
<td><code>devilbox/php-fpm:5.3-base</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.3-base.svg" /></a>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/version/devilbox/php-fpm:5.3-base.svg" /></a>
</td>
</tr>
</tr>
<td><code>devilbox/php-fpm:5.4-base</code></td>
<td>
@@ -229,7 +237,14 @@ The following table shows a more complete overview about the offered Docker imag
</tr>
<tr>
<td rowspan="8"><strong>mods</strong></td>
<td rowspan="9"><strong>mods</strong></td>
<td><code>devilbox/php-fpm:5.2-mods</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.2-mods.svg" /></a>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/version/devilbox/php-fpm:5.2-mods.svg" /></a>
</td>
</tr>
<tr>
<td><code>devilbox/php-fpm:5.3-mods</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.3-mods.svg" /></a>
@@ -287,7 +302,14 @@ The following table shows a more complete overview about the offered Docker imag
</tr>
<tr>
<td rowspan="8"><strong>prod</strong></td>
<td rowspan="9"><strong>prod</strong></td>
<td><code>devilbox/php-fpm:5.2-prod</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.2-prod.svg" /></a>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/version/devilbox/php-fpm:5.2-prod.svg" /></a>
</td>
</tr>
<tr>
<td><code>devilbox/php-fpm:5.3-prod</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.3-prod.svg" /></a>
@@ -345,7 +367,14 @@ The following table shows a more complete overview about the offered Docker imag
</tr>
<tr>
<td rowspan="8"><strong>work</strong></td>
<td rowspan="9"><strong>work</strong></td>
<td><code>devilbox/php-fpm:5.2-work</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.2-work.svg" /></a>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/version/devilbox/php-fpm:5.2-work.svg" /></a>
</td>
</tr>
<tr>
<td><code>devilbox/php-fpm:5.3-work</code></td>
<td>
<a href="https://microbadger.com/images/devilbox/php-fpm"><img src="https://images.microbadger.com/badges/image/devilbox/php-fpm:5.3-work.svg" /></a>
@@ -466,45 +495,50 @@ Check out this table to see which Docker image provides what PHP modules.
</tr>
</thead>
<tbody>
<tr>
<th>5.2</th>
<td id="52-base">ctype, curl, date, dom, filter, hash, iconv, json, libxml, mbstring, mysql, mysqli, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, posix, readline, Reflection, session, SimpleXML, soap, SPL, SQLite, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="52-mods">amqp, bcmath, bz2, calendar, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, msgpack, mysql, mysqli, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>5.3</th>
<td id="53-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, hash, iconv, json, libxml, mysql, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, SQLite, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="53-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="53-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>5.4</th>
<td id="54-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, hash, iconv, json, libxml, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="54-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="54-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>5.5</th>
<td id="55-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="55-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="55-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>5.6</th>
<td id="56-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mhash, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="56-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="56-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>7.0</th>
<td id="70-base">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, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="70-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="70-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>7.1</th>
<td id="71-base">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, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="71-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="71-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>7.2</th>
<td id="72-base">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</td>
<td id="72-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="72-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
<tr>
<th>7.3</th>
<td id="73-base">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</td>
<td id="73-mods">apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcached, mongodb, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
<td id="73-mods">apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcached, mongodb, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr>
</tbody>
</table>
@@ -515,6 +549,7 @@ Check out this table to see which Docker image provides what PHP modules.
#### Image: base
```shell
docker pull devilbox/php-fpm:5.2-base
docker pull devilbox/php-fpm:5.3-base
docker pull devilbox/php-fpm:5.4-base
docker pull devilbox/php-fpm:5.5-base
@@ -529,6 +564,7 @@ Generic PHP-FPM base image. Use it to derive your own php-fpm docker image from
#### Image: mods
```shell
docker pull devilbox/php-fpm:5.2-mods
docker pull devilbox/php-fpm:5.3-mods
docker pull devilbox/php-fpm:5.4-mods
docker pull devilbox/php-fpm:5.5-mods
@@ -543,6 +579,7 @@ Generic PHP-FPM image with fully loaded extensions. Use it to derive your own ph
#### Image: prod
```shell
docker pull devilbox/php-fpm:5.2-prod
docker pull devilbox/php-fpm:5.3-prod
docker pull devilbox/php-fpm:5.4-prod
docker pull devilbox/php-fpm:5.5-prod
@@ -557,6 +594,7 @@ Devilbox production image. This Docker image comes with many injectables, port-f
#### Image: work
```shell
docker pull devilbox/php-fpm:5.2-work
docker pull devilbox/php-fpm:5.3-work
docker pull devilbox/php-fpm:5.4-work
docker pull devilbox/php-fpm:5.5-work
@@ -610,7 +648,7 @@ Have a look at the following table to see all supported environment variables fo
<td colspan="5"></td>
</tr>
<tr>
<td rowspan="4"><strong>prod</strong><br/><br/><strong>work</strong></td>
<td rowspan="6"><strong>prod</strong><br/><br/><strong>work</strong></td>
<td><code>TIMEZONE</code></td>
<td>string</td>
<td><code>UTC</code></td>
@@ -622,6 +660,18 @@ Have a look at the following table to see all supported environment variables fo
<td><code>1</code></td>
<td>By default all Docker images are configured to output their PHP-FPM access and error logs to stdout and stderr. Those which support it can change the behaviour to log into files inside the container. Their respective directories are available as volumes that can be mounted to the host computer. This feature might help developer who are more comfortable with tailing or searching through actual files instead of using docker logs.<br/><br/>Set this variable to <code>0</code> in order to enable logging to files. Log files are avilable under <code>/var/log/php/</code> which is also a docker volume that can be mounted locally.</td>
</tr>
<tr>
<td><code>ENABLE_MODULES</code></td>
<td>string</td>
<td><code>''</code></td>
<td>Comma separated list of PHP modules to enable, which are not enabled by default.<br/><strong>Example:</strong><br/><code>ENABLE_MODULES=ioncube</code></td>
</tr>
<tr>
<td><code>DISABLE_MODULES</code></td>
<td>string</td>
<td><code>''</code></td>
<td>Comma separated list of PHP modules to disable.<br/><strong>Example:</strong><br/><code>DISABLE_MODULES=swoole,imagick</code></td>
</tr>
<tr>
<td><code>ENABLE_MAIL</code></td>
<td>bool</td>
@@ -736,6 +786,20 @@ Have a look at the following table to see all offered exposed ports for each Doc
<h2><img id="php-default-configuration" width="20" src="https://github.com/devilbox/artwork/raw/master/submissions_logo/cytopia/01/png/logo_64_trans.png"> PHP Default Configuration</h2>
Each PHP version is using the same sane default php.ini values, making it pain-free to switch versions and not having to worry about different php.ini settings.
**Note:** Flavours alway inherit the settings from its parent flavour if they have no own configuration.
| Flavour | Applied php.ini files|
|---------|------------------------------------------|
| base | [php.ini](Dockerfiles/base/data/php-ini.d/) and [php-fpm.conf](Dockerfiles/base/data/php-fpm.conf/) |
| mods | inherits from base |
| prod | inherits from base |
| work | [php.ini](Dockerfiles/work/data/php-ini.d/) [php-fpm.conf](Dockerfiles/work/data/php-fpm.conf/) |
<h2><img id="integrated-development-environment" width="20" src="https://github.com/devilbox/artwork/raw/master/submissions_logo/cytopia/01/png/logo_64_trans.png"> Integrated Development Environment</h2>
If you plan to use the PHP-FPM image for development, hence being able to execute common commands inside the container itself, you should go with the **work** Image.
@@ -754,14 +818,30 @@ You want to use tools such as `git`, `drush`, `composer`, `npm`, `eslint`, `phpc
<th>Description</th>
</tr>
</thead>
<tr>
<td><a href="https://www.ansible.com/">Ansible</a></td>
<td>Automation tool.</td>
</tr>
<tr>
<td><a href="https://asgardcms.com/install">asgardcms</a></td>
<td>AsgardCMS cli installer.</td>
</tr>
<tr>
<td><a href="https://github.com/cytopia/awesome-ci">awesome-ci</a></td>
<td>Various linting and source code analyzing tools.</td>
</tr>
<tr>
<td><a href="https://codeception.com/">codeception</a></td>
<td>Elegant and efficient testing for PHP.</td>
</tr>
<tr>
<td><a href="https://getcomposer.org">composer</a></td>
<td>Dependency Manager for PHP.</td>
</tr>
<tr>
<td><a href="https://deployer.org/">deployer</a></td>
<td>Deployment tool for PHP.</td>
</tr>
<tr>
<td><a href="https://drupalconsole.com">drupal-console</a></td>
<td>The Drupal CLI. A tool to generate boilerplate code, interact with and debug Drupal.</td>
@@ -794,10 +874,18 @@ You want to use tools such as `git`, `drush`, `composer`, `npm`, `eslint`, `phpc
<td><a href="https://github.com/zaach/jsonlint">jsonlint</a></td>
<td>Json command line linter.</td>
</tr>
<tr>
<td><a href="https://stedolan.github.io/jq/">jq</a></td>
<td>Command-line JSON processor.</td>
</tr>
<tr>
<td><a href="https://github.com/laravel/installer">laravel installer</a></td>
<td>A CLI tool to easily install and manage the laravel framework.</td>
</tr>
<tr>
<td><a href="https://github.com/cytopia/linkcheck">linkcheck</a></td>
<td>Search for URLs in files (optionally limited by extension) and validate their HTTP status code.</td>
</tr>
<tr>
<td><a href="http://linuxbrew.sh">linuxbrew</a></td>
<td>The Homebrew package manager for Linux.</td>
@@ -846,6 +934,10 @@ You want to use tools such as `git`, `drush`, `composer`, `npm`, `eslint`, `phpc
<td><a href="https://github.com/brigade/scss-lint">scss-lint</a></td>
<td>Sass/CSS command line linter.</td>
</tr>
<tr>
<td><a href="https://www.openssh.com/">ssh</a></td>
<td>OpenSSH command line client.</td>
</tr>
<tr>
<td><a href="https://github.com/symfony/symfony-installer">symfony installer</a></td>
<td>This is the official installer to start new projects based on the Symfony full-stack framework.</td>

View File

@@ -0,0 +1,301 @@
{% if not php_version == 5.2 %}
; ################################################################################
; ####
; #### The following settings can be overwritten by later includes
; ####
; ################################################################################
; ############################################################
; Timeouts
; ############################################################
[www]
; The timeout for serving a single request after which the worker process will be killed.
; This option should be used when the 'max_execution_time' ini option does not stop script
; execution for some reason.
request_terminate_timeout = {{ item.cfg[item.key].request_terminate_timeout | default(item.cfg[item.alt].request_terminate_timeout) }}
; ############################################################
; Logging
; ############################################################
[global]
error_log = {{ item.cfg[item.key].error_log | default(item.cfg[item.alt].error_log) }}
log_level = {{ item.cfg[item.key].log_level | default(item.cfg[item.alt].log_level) }}
[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = {{ item.cfg[item.key].access_log | default(item.cfg[item.alt].access_log) }}
; ############################################################
; Backlog configuration
; ############################################################
[www]
; A maximum of backlog incoming connections will be queued for processing.
; If a connection request arrives with the queue full the client may receive an error with an
; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission,
; the request may be ignored so that retries may succeed.
; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections
; are silently truncated
listen.backlog = {{ item.cfg[item.key].listen_backlog | default(item.cfg[item.alt].listen_backlog) }}
; ############################################################
; Worker configuration
; ############################################################
[www]
; static - the number of child processes is fixed (pm.max_children).
;
; dynamic - the number of child processes is set dynamically based on the following directives:
; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
;
; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where
; pm.start_servers are started when the service is started.
pm = {{ item.cfg[item.key].pm | default(item.cfg[item.alt].pm) }}
; The maximum number of child processes to be created
pm.max_children = {{ item.cfg[item.key].pm_max_children | default(item.cfg[item.alt].pm_max_children) }}
; The number of child processes created on startup. Used only when pm is set to dynamic.
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2.
pm.start_servers = {{ item.cfg[item.key].pm_start_servers | default(item.cfg[item.alt].pm_start_servers) }}
; The desired minimum number of idle server processes.
pm.min_spare_servers = {{ item.cfg[item.key].pm_min_spare_servers | default(item.cfg[item.alt].pm_min_spare_servers) }}
; The desired maximum number of idle server processes.
pm.max_spare_servers = {{ item.cfg[item.key].pm_max_spare_servers | default(item.cfg[item.alt].pm_max_spare_servers) }}
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries.
; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default value: 0.
pm.max_requests = {{ item.cfg[item.key].pm_max_requests | default(item.cfg[item.alt].pm_max_requests) }}
; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand
pm.process_idle_timeout = {{ item.cfg[item.key].pm_process_idle_timeout | default(item.cfg[item.alt].pm_process_idle_timeout) }}
; ############################################################
; Include
; ############################################################
[global]
include = /usr/local/etc/php-fpm.d/*.conf
; ################################################################################
; ####
; #### The following settings overwrite any includes again
; ####
; ################################################################################
; ############################################################
; Required for Dockerization
; ############################################################
[global]
daemonize = no
[www]
{# This value is available since PHP >=5.4 #}
{% if not php_version == 5.3 %}
; Keep env variables set by docker
clear_env = {{ item.cfg[item.key].clear_env | default(item.cfg[item.alt].clear_env) }}
{% endif %}
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = {{ item.cfg[item.key].catch_workers_output | default(item.cfg[item.alt].catch_workers_output) }}
; ############################################################
; User and Group
; ############################################################
[www]
user = {{ item.cfg[item.key].user | default(item.cfg[item.alt].user) }}
group = {{ item.cfg[item.key].group | default(item.cfg[item.alt].group) }}
; ############################################################
; Networking
; ############################################################
[www]
; Ensure to listen here
listen = {{ item.cfg[item.key].listen | default(item.cfg[item.alt].listen)}}
{% else %}
{# PHP-FPM 5.2 uses XML format for configuration #}
<?xml version="1.0" ?>
<configuration>
All relative paths in this config are relative to php's install prefix
<section name="global_options">
Pid file
<value name="pid_file">/var/run/php-fpm.pid</value>
Error log file
<value name="error_log">{{ item.cfg[item.key].error_log | default(item.cfg[item.alt].error_log) }}</value>
Log level
<value name="log_level">{{ item.cfg[item.key].log_level | default(item.cfg[item.alt].log_level) }}</value>
When this amount of php processes exited with SIGSEGV or SIGBUS ...
<value name="emergency_restart_threshold">10</value>
... in a less than this interval of time, a graceful restart will be initiated.
Useful to work around accidental curruptions in accelerator's shared memory.
<value name="emergency_restart_interval">1m</value>
Time limit on waiting child's reaction on signals from master
<value name="process_control_timeout">5s</value>
Set to 'no' to debug fpm
<value name="daemonize">no</value>
</section>
<workers>
<section name="pool">
Name of pool. Used in logs and stats.
<value name="name">www</value>
Address to accept fastcgi requests on.
Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
<value name="listen_address">0.0.0.0:{{ item.cfg[item.key].listen | default(item.cfg[item.alt].listen) }}</value>
<value name="listen_options">
Set listen(2) backlog
<value name="backlog">{{ item.cfg[item.key].listen_backlog | default(item.cfg[item.alt].listen_backlog) }}</value>
Set permissions for unix socket, if one used.
In Linux read/write permissions must be set in order to allow connections from web server.
Many BSD-derrived systems allow connections regardless of permissions.
<value name="owner"></value>
<value name="group"></value>
<value name="mode">0666</value>
</value>
Additional php.ini defines, specific to this pool of workers.
<value name="php_defines">
<value name="error_reporting">{% if item.key == 'base' %}6135{% else %}-1{% endif %}</value>
<value name="xmlrpc_errors">0</value>
<value name="report_memleaks">1</value>
<value name="display_errors">{% if item.key == 'base' %}0{% else %}1{% endif %}</value>
<value name="display_startup_errors">{% if item.key == 'base' %}0{% else %}1{% endif %}</value>
<value name="track_errors">1</value>
<value name="log_errors">1</value>
<value name="html_errors">{% if item.key == 'base' %}0{% else %}1{% endif %}</value>
</value>
Unix user of processes
<value name="user">{{ item.cfg[item.key].user | default(item.cfg[item.alt].user) }}</value>
Unix group of processes
<value name="group">{{ item.cfg[item.key].group | default(item.cfg[item.alt].group) }}</value>
Process manager settings
<value name="pm">
Sets style of controling worker process count.
Valid values are 'static' and 'apache-like'
<value name="style">apache-like</value>
Sets the limit on the number of simultaneous requests that will be served.
Equivalent to Apache MaxClients directive.
Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
Used with any pm_style.
<!--<value name="max_children">{{ item.cfg[item.key].pm_max_children | default(item.cfg[item.alt].pm_max_children) }}</value>-->
<value name="max_children">5</value>
Settings group for 'apache-like' pm style
<value name="apache_like">
Sets the number of server processes created on startup.
Used only when 'apache-like' pm_style is selected
<!--<value name="StartServers">{{ item.cfg[item.key].pm_start_servers | default(item.cfg[item.alt].pm_start_servers) }}</value>-->
<value name="StartServers">3</value>
Sets the desired minimum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MinSpareServers">{{ item.cfg[item.key].pm_min_spare_servers | default(item.cfg[item.alt].pm_min_spare_servers) }}</value>-->
<value name="MinSpareServers">2</value>
Sets the desired maximum number of idle server processes.
Used only when 'apache-like' pm_style is selected
<!--<value name="MaxSpareServers">{{ item.cfg[item.key].pm_max_spare_servers | default(item.cfg[item.alt].pm_max_spare_servers) }}</value>-->
<value name="MaxSpareServers">4</value>
</value>
</value>
The timeout (in seconds) for serving a single request after which the worker process will be terminated
Should be used when 'max_execution_time' ini option does not stop script execution for some reason
'0s' means 'off'
<value name="request_terminate_timeout">{{ item.cfg[item.key].request_terminate_timeout | default(item.cfg[item.alt].request_terminate_timeout) }}</value>
The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
'0s' means 'off'
<value name="request_slowlog_timeout">0s</value>
The log file for slow requests
<value name="slowlog">{{ item.cfg[item.key].error_log | default(item.cfg[item.alt].error_log) }}</value>
Set open file desc rlimit
<value name="rlimit_files">1024</value>
Set max core size rlimit
<value name="rlimit_core">0</value>
Chroot to this directory at the start, absolute path
<value name="chroot"></value>
Chdir to this directory at the start, absolute path
<value name="chdir"></value>
Redirect workers' stdout and stderr into main error log.
If not set, they will be redirected to /dev/null, according to FastCGI specs
<value name="catch_workers_output">{{ item.cfg[item.key].catch_workers_output | default(item.cfg[item.alt].catch_workers_output) }}</value>
How much requests each process should execute before respawn.
Useful to work around memory leaks in 3rd party libraries.
For endless request processing please specify 0
Equivalent to PHP_FCGI_MAX_REQUESTS
<value name="max_requests">{{ item.cfg[item.key].pm_max_requests | default(item.cfg[item.alt].pm_max_requests) }}</value>
Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
Makes sense only with AF_INET listening socket.
<!-- <value name="allowed_clients">127.0.0.1</value> -->
Pass environment variables like LD_LIBRARY_PATH
All $VARIABLEs are taken from current environment
<value name="environment">
<value name="HOSTNAME">$HOSTNAME</value>
<value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value name="TMP">/tmp</value>
<value name="TMPDIR">/tmp</value>
<value name="TEMP">/tmp</value>
<value name="OSTYPE">$OSTYPE</value>
<value name="MACHTYPE">$MACHTYPE</value>
<value name="MALLOC_CHECK_">2</value>
</value>
</section>
</workers>
</configuration>
{% endif %}

View File

@@ -0,0 +1,56 @@
; ############################################################
; # Devilbox PHP defaults for {{ php_version }}-{{ item.key }}
; ############################################################
; Each PHP flavour (base, mods, prod, work) might have its own php.ini.
; If none is present, the one from the previous flavour is inherited.
[PHP]
; Memory
; Note: "memory_limit" should be larger than "post_max_size"
memory_limit = {{ item.cfg[item.key].memory_limit | default(item.cfg[item.alt].memory_limit) }}
; Timeouts
max_execution_time = {{ item.cfg[item.key].max_execution_time | default(item.cfg[item.alt].max_execution_time) }}
max_input_time = {{ item.cfg[item.key].max_input_time | default(item.cfg[item.alt].max_input_time) }}
; Uploads
; Note: "post_max_size" should be greater than "upload_max_filesize"
post_max_size = {{ item.cfg[item.key].post_max_size | default(item.cfg[item.alt].post_max_size) }}
upload_max_filesize = {{ item.cfg[item.key].upload_max_filesize | default(item.cfg[item.alt].upload_max_filesize) }}
max_file_uploads = {{ item.cfg[item.key].max_file_uploads | default(item.cfg[item.alt].max_file_uploads) }}
; Vars
variables_order = {{ item.cfg[item.key].variables_order | default(item.cfg[item.alt].variables_order) }}
{# Only available since PHP >=5.4 #}
{% if not (php_version == 5.2 or php_version == 5.3 ) %}
max_input_vars = {{ item.cfg[item.key].max_input_vars | default(item.cfg[item.alt].max_input_vars) }}
{% endif %}
max_input_nesting_level = {{ item.cfg[item.key].max_input_nesting_level | default(item.cfg[item.alt].max_input_nesting_level) }}
; Error reporting
; Note: error_log is dynamic and handled during start to set appropriate setting
error_reporting = {{ item.cfg[item.key].error_reporting | default(item.cfg[item.alt].error_reporting) }}
xmlrpc_errors = {{ item.cfg[item.key].xmlrpc_errors | default(item.cfg[item.alt].xmlrpc_errors) }}
report_memleaks = {{ item.cfg[item.key].report_memleaks | default(item.cfg[item.alt].report_memleaks) }}
display_errors = {{ item.cfg[item.key].display_errors | default(item.cfg[item.alt].display_errors) }}
display_startup_errors = {{ item.cfg[item.key].display_startup_errors | default(item.cfg[item.alt].display_startup_errors) }}
{# Only available before PHP 7.2 #}
{% if php_version == 5.2 or php_version == 5.3 or php_version == 5.4 or php_version == 5.5 or php_version == 5.6 or php_version == 7.0 or php_version == 7.1 %}
track_errors = {{ item.cfg[item.key].track_errors | default(item.cfg[item.alt].track_errors) }}
{% endif %}
log_errors = {{ item.cfg[item.key].log_errors | default(item.cfg[item.alt].log_errors) }}
html_errors = {{ item.cfg[item.key].html_errors | default(item.cfg[item.alt].html_errors) }}
; Xdebug settings
xdebug.default_enable = {{ item.cfg[item.key].xdebug_default_enable | default(item.cfg[item.alt].xdebug_default_enable) }}
xdebug.profiler_enable = {{ item.cfg[item.key].xdebug_profiler_enable | default(item.cfg[item.alt].xdebug_profiler_enable) }}
xdebug.remote_enable = {{ item.cfg[item.key].xdebug_remote_enable | default(item.cfg[item.alt].xdebug_remote_enable) }}
xdebug.remote_autostart = {{ item.cfg[item.key].xdebug_remote_autostart | default(item.cfg[item.alt].xdebug_remote_autostart) }}

View File

@@ -1,5 +1,7 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
{% if php_version == 5.3 %}
{% if php_version == 5.2 %}
FROM devilbox/php-fpm-5.2
{% elif php_version == 5.3 %}
FROM devilbox/php-fpm-5.3
{% elif php_version == 7.3 %}
FROM devilbox/php-fpm-7.3
@@ -26,7 +28,8 @@ LABEL \
ENV MY_USER="devilbox" \
MY_GROUP="devilbox" \
MY_UID="1000" \
MY_GID="1000"
MY_GID="1000" \
PHP_VERSION="{{ php_version }}"
###
@@ -41,9 +44,8 @@ RUN set -x \
### Upgrade (install ps)
###
RUN set -x \
&& apt-get update \
&& apt-get upgrade -y \
&& apt-get install --no-install-recommends --no-install-suggests -y procps \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \
&& rm -rf /var/lib/apt/lists/*
@@ -62,13 +64,11 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php-ini.d/php-{{ php_version }}.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-{{ php_version }}.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
{% if php_version == 5.3 %}
COPY ./data/php-fpm.d-docker-5.3.conf /usr/local/etc/php-fpm.d/docker.conf
{% endif %}
{% if debug %}
@@ -76,10 +76,20 @@ COPY ./data/php-fpm.d-docker-5.3.conf /usr/local/etc/php-fpm.d/docker.conf
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^{{ php_version }}' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
{% endif %}

View File

@@ -18,43 +18,56 @@ LABEL \
### Envs
###
ENV BUILD_DEPS \
{# Loop over enabled build dependencies #}
{% for ext in extensions_enabled %}
{# Not disabled #}
{% if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{# Version specific build dependency available? #}
{% if php_version in extensions_available[ext] and 'build_dep' in extensions_available[ext][php_version] %}
{% for build_dep in extensions_available[ext][php_version]['build_dep'] %}
{# Loop over enabled build dependencies -#}
{%- set build_deps = [] -%}
{%- for ext in extensions_enabled -%}
{#- Not disabled AND not already available by default -#}
{%- if (('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']))
and ('already_avail' not in extensions_available[ext] or php_version not in extensions_available[ext]['already_avail']) -%}
{#- Version specific build dependency available? -#}
{%- if php_version in extensions_available[ext] and 'build_dep' in extensions_available[ext][php_version] -%}
{%- for build_dep in extensions_available[ext][php_version]['build_dep'] -%}
{#- Append build dependencies to our array -#}
{{- build_deps.append(build_dep) -}}
{%- endfor -%}
{#- Generic build dependency available? -#}
{%- elif 'all' in extensions_available[ext] and 'build_dep' in extensions_available[ext]['all'] -%}
{%- for build_dep in extensions_available[ext]['all']['build_dep'] -%}
{#- Append build dependencies to our array -#}
{{- build_deps.append(build_dep) -}}
{%- endfor -%}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{% for build_dep in build_deps | unique | sort %}
{{ build_dep }} \
{% endfor %}
{# Generic build dependency available? #}
{% elif 'all' in extensions_available[ext] and 'build_dep' in extensions_available[ext]['all'] %}
{% for build_dep in extensions_available[ext]['all']['build_dep'] %}
{{ build_dep }} \
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
ca-certificates \
git
ENV RUN_DEPS \
{# Loop over enabled run-time dependencies #}
{% for ext in extensions_enabled %}
{# Not disabled #}
{% if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{# Version specific run-time dependency available? #}
{% if php_version in extensions_available[ext] and 'run_dep' in extensions_available[ext][php_version] %}
{% for run_dep in extensions_available[ext][php_version]['run_dep'] %}
{# Loop over enabled run-time dependencies -#}
{%- set run_deps = [] -%}
{%- for ext in extensions_enabled -%}
{#- Not disabled -#}
{%- if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) -%}
{#- Version specific run-time dependency available? -#}
{%- if php_version in extensions_available[ext] and 'run_dep' in extensions_available[ext][php_version] -%}
{%- for run_dep in extensions_available[ext][php_version]['run_dep'] -%}
{#- Append run dependencies to our array -#}
{{- run_deps.append(run_dep) -}}
{%- endfor -%}
{#- Generic run-time dependency available? -#}
{%- elif 'all' in extensions_available[ext] and 'run_dep' in extensions_available[ext]['all'] -%}
{%- for run_dep in extensions_available[ext]['all']['run_dep'] -%}
{#- Append run dependencies to our array -#}
{{- run_deps.append(run_dep) -}}
{%- endfor -%}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{% for run_dep in run_deps | unique | sort %}
{{ run_dep }} \
{% endfor %}
{# Generic run-time dependency available? #}
{% elif 'all' in extensions_available[ext] and 'run_dep' in extensions_available[ext]['all'] %}
{% for run_dep in extensions_available[ext]['all']['run_dep'] %}
{{ run_dep }} \
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
ca-certificates
@@ -63,105 +76,124 @@ ENV RUN_DEPS \
### Install
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
${BUILD_DEPS} \
\
\
{# Loop over enabled extensions #}
{% for ext in extensions_enabled %}
{# Not disabled #}
{% if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{# ---------- Pre Command ---------- #}
{# Version specific pre-command available? #}
{% if php_version in extensions_available[ext] and 'pre' in extensions_available[ext][php_version] %}
{# Not disabled AND not already enabled #}
{% if (('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled'])) and ('already_avail' not in extensions_available[ext] or php_version not in extensions_available[ext]['already_avail']) %}
{# ---------- Pre Command ---------- #}
{# Version specific pre-command available? #}
{% if php_version in extensions_available[ext] and 'pre' in extensions_available[ext][php_version] %}
&& {{ extensions_available[ext][php_version]['pre'] }} \
{# Generic pre-command available? #}
{% elif 'all' in extensions_available[ext] and 'pre' in extensions_available[ext]['all'] %}
{# Generic pre-command available? #}
{% elif 'all' in extensions_available[ext] and 'pre' in extensions_available[ext]['all'] %}
&& {{ extensions_available[ext]['all']['pre'] }} \
{% endif %}
{# ---------- Installation (specific) ---------- #}
{% if php_version in extensions_available[ext] and 'type' in extensions_available[ext][php_version] %}
{# ---- 1.) Builtin ---- #}
{% if extensions_available[ext][php_version]['type'] == 'builtin' %}
{% if 'configure' in extensions_available[ext][php_version] %}
{% endif %}
{# ---------- Installation (specific) ---------- #}
{% if php_version in extensions_available[ext] and 'type' in extensions_available[ext][php_version] %}
{# ---- 1.) Builtin ---- #}
{% if extensions_available[ext][php_version]['type'] == 'builtin' %}
{% if 'configure' in extensions_available[ext][php_version] %}
&& /usr/local/bin/docker-php-ext-configure {{ ext }} {{ extensions_available[ext][php_version]['configure'] }} \
{% endif %}
{% endif %}
&& /usr/local/bin/docker-php-ext-install{% if php_version != 5.4 %} -j$(getconf _NPROCESSORS_ONLN){% endif %} {{ ext }} \
{# ---- 2.) PECL ---- #}
{% elif extensions_available[ext][php_version]['type'] == 'pecl' %}
{% if 'command' in extensions_available[ext][php_version] %}
{# ---- 2.) PECL ---- #}
{% elif extensions_available[ext][php_version]['type'] == 'pecl' %}
{% if 'command' in extensions_available[ext][php_version] %}
&& {{ extensions_available[ext][php_version]['command'] }} \
{% else %}
{% else %}
&& pecl install {{ ext }}{% if 'version' in extensions_available[ext][php_version] %}-{{ extensions_available[ext][php_version]['version'] }}{% endif %} \
{% endif %}
{% endif %}
&& docker-php-ext-enable {{ ext }} \
{# ---- 3.) GIT ---- #}
{% elif extensions_available[ext][php_version]['type'] == 'git' %}
{# ---- 3.) GIT ---- #}
{% elif extensions_available[ext][php_version]['type'] == 'git' %}
&& git clone -v {{ extensions_available[ext][php_version]['git_url'] }} /tmp/{{ ext }} \
&& cd /tmp/{{ ext }} \
{% if 'git_ref' in extensions_available[ext][php_version] %}
{% if 'git_ref' in extensions_available[ext][php_version] %}
&& git checkout {{ extensions_available[ext][php_version]['git_ref'] }} \
{% endif %}
{% if 'command' in extensions_available[ext][php_version] %}
{% endif %}
{% if 'command' in extensions_available[ext][php_version] %}
&& {{ extensions_available[ext][php_version]['command'] }} \
{% else %}
{% else %}
&& phpize \
&& ./configure {% if 'configure' in extensions_available[ext][php_version] %} {{ extensions_available[ext][php_version]['configure'] }}{% endif %} \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
{% endif %}
{% endif %}
&& docker-php-ext-enable {{ ext }} \
&& cd / && rm -rf /tmp/{{ ext }} \
{% endif %}
{# ---------- Installation (generic) ---------- #}
{% elif 'all' in extensions_available[ext] and 'type' in extensions_available[ext]['all'] %}
{# ---- 1.) Builtin ---- #}
{% if extensions_available[ext]['all']['type'] == 'builtin' %}
{% if 'configure' in extensions_available[ext]['all'] %}
{# ---- 4.) CUSTOM ---- #}
{% elif extensions_available[ext][php_version]['type'] == 'custom' %}
&& {{ extensions_available[ext][php_version]['command'] }} \
{% endif %}
{# ---------- Installation (generic) ---------- #}
{% elif 'all' in extensions_available[ext] and 'type' in extensions_available[ext]['all'] %}
{# ---- 1.) Builtin ---- #}
{% if extensions_available[ext]['all']['type'] == 'builtin' %}
{% if 'configure' in extensions_available[ext]['all'] %}
&& /usr/local/bin/docker-php-ext-configure {{ ext }} {{ extensions_available[ext]['all']['configure'] }} \
{% endif %}
{% endif %}
&& /usr/local/bin/docker-php-ext-install{% if php_version != 5.4 %} -j$(getconf _NPROCESSORS_ONLN){% endif %} {{ ext }} \
{# ---- 2.) PECL ---- #}
{% elif extensions_available[ext]['all']['type'] == 'pecl' %}
{% if 'command' in extensions_available[ext]['all'] %}
{# ---- 2.) PECL ---- #}
{% elif extensions_available[ext]['all']['type'] == 'pecl' %}
{% if 'command' in extensions_available[ext]['all'] %}
&& {{ extensions_available[ext]['all']['command'] }} \
{% else %}
{% else %}
&& pecl install {{ ext }}{% if 'version' in extensions_available[ext]['all'] %}-{{ extensions_available[ext]['all']['version'] }}{% endif %} \
{% endif %}
{% endif %}
&& docker-php-ext-enable {{ ext }} \
{# ---- 3.) GIT ---- #}
{% elif extensions_available[ext]['all']['type'] == 'git' %}
{# ---- 3.) GIT ---- #}
{% elif extensions_available[ext]['all']['type'] == 'git' %}
&& git clone -v {{ extensions_available[ext]['all']['git_url'] }} /tmp/{{ ext }} \
&& cd /tmp/{{ ext }} \
{% if 'git_ref' in extensions_available[ext]['all'] %}
{% if 'git_ref' in extensions_available[ext]['all'] %}
&& git checkout {{ extensions_available[ext]['all']['git_ref'] }} \
{% endif %}
{% if 'command' in extensions_available[ext]['all'] %}
{% endif %}
{% if 'command' in extensions_available[ext]['all'] %}
&& {{ extensions_available[ext]['all']['command'] }} \
{% else %}
{% else %}
&& phpize \
&& ./configure {% if 'configure' in extensions_available[ext]['all'] %} {{ extensions_available[ext]['all']['configure'] }}{% endif %} \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
{% endif %}
{% endif %}
&& docker-php-ext-enable {{ ext }} \
&& cd / && rm -rf /tmp/{{ ext }} \
{% endif %}
{% endif %}
{% endif %}
{# ---- 4.) CUSTOM ---- #}
{% elif extensions_available[ext]['all']['type'] == 'custom' %}
&& {{ extensions_available[ext]['all']['command'] }} \
{% endif %}
{% endif %}
{% endif %}
{# Ensure modules that are not disabled have an appropriate ini directive and are loaded #}
{% if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{% if php_version in extensions_available[ext] and 'load_ext' in extensions_available[ext][php_version] %}
&& if [ ! -f "/usr/local/etc/php/conf.d/docker-php-ext-{{ ext }}.ini" ]; then echo "extension={{ extensions_available[ext][php_version]['load_ext'] }}" > "/usr/local/etc/php/conf.d/docker-php-ext-{{ ext }}.ini"; fi \
{% elif 'all' in extensions_available[ext] and 'load_ext' in extensions_available[ext]['all'] %}
&& if [ ! -f "/usr/local/etc/php/conf.d/docker-php-ext-{{ ext }}.ini" ]; then echo "extenstion={{ extensions_available[ext]['all']['load_ext'] }}" > "/usr/local/etc/php/conf.d/docker-php-ext-{{ ext }}.ini"; fi \
{% endif %}
\
&& rm -rf /usr/local/lib/php/test/{{ ext }} || true \
&& rm -rf /usr/local/lib/php/doc/{{ ext }} || true \
&& chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \
{% endif %}
{% endfor %}
&& rm -rf /tmp/* \
\
\
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
${BUILD_DEPS} \
\
\
&& apt-get install --no-install-recommends --no-install-suggests -y \
${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates \
&& sh -c "find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true"
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
{% if debug %}
@@ -169,23 +201,34 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^{{ php_version }}' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
RUN set -x \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini \
\
{% for ext in extensions_enabled %}
{# Not disabled #}
{% if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{% if ext == 'opcache' %}
{#- Not disabled #}
{%- if ('disabled' not in extensions_available[ext]) or (php_version not in extensions_available[ext]['disabled']) %}
{%- if ext == 'opcache' %}
&& php -m | grep -oiE '^Zend Opcache$' \
&& php-fpm -m | grep -oiE '^Zend Opcache$' \
{% else %}
{# #}
{%- elif ext not in ['ioncube'] %}
&& php -m | grep -oiE '^{{ ext }}$' \
&& php-fpm -m | grep -oiE '^{{ ext }}$' \
{% endif %}
{% endif %}
{# #}
{%- endif %}
{%- endif %}
{% endfor %}
&& true

View File

@@ -18,20 +18,25 @@ LABEL \
### Install
###
RUN set -x \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
locales-all \
postfix \
postfix-pcre \
rsyslog \
socat \
supervisor \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
&& rm -rf /etc/supervisor* \
&& mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /var/log/supervisor
&& mkdir -p /var/log/supervisor \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
@@ -40,10 +45,20 @@ RUN set -x \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^{{ php_version }}' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
{% endif %}

View File

@@ -24,43 +24,51 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools
###
RUN set -x \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
dirmngr \
gnupg \
{% for repo in apt_repositories_enabled %}
{# Not disabled #}
{% if ('disabled' not in apt_repositories_available[repo]) or (php_version not in apt_repositories_available[repo]['disabled']) %}
{# Version specific pre-command available? #}
{% if php_version in apt_repositories_available[repo] and 'pre' in apt_repositories_available[repo][php_version] %}
{% for repo in apt_repositories_enabled -%}
{#- Not disabled -#}
{%- if ('disabled' not in apt_repositories_available[repo]) or (php_version not in apt_repositories_available[repo]['disabled']) -%}
{#- Version specific pre-command available? -#}
{%- if php_version in apt_repositories_available[repo] and 'pre' in apt_repositories_available[repo][php_version] %}
&& {{ apt_repositories_available[repo][php_version]['pre'] }} \
{# Generic pre-command available? #}
{% elif 'all' in apt_repositories_available[repo] and 'pre' in apt_repositories_available[repo]['all'] %}
{# #}
{#- Generic pre-command available? -#}
{%- elif 'all' in apt_repositories_available[repo] and 'pre' in apt_repositories_available[repo]['all'] %}
&& {{ apt_repositories_available[repo]['all']['pre'] }} \
{% endif %}
{# Version specific key available? #}
{% if php_version in apt_repositories_available[repo] and 'key' in apt_repositories_available[repo][php_version] %}
{# #}
{%- endif -%}
{#- Version specific key available? -#}
{%- if php_version in apt_repositories_available[repo] and 'key' in apt_repositories_available[repo][php_version] %}
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv {{ apt_repositories_available[repo][php_version]['key'] }} \
{# Generic key available? #}
{% elif 'all' in apt_repositories_available[repo] and 'key' in apt_repositories_available[repo]['all'] %}
{# #}
{#- Generic key available? -#}
{%- elif 'all' in apt_repositories_available[repo] and 'key' in apt_repositories_available[repo]['all'] %}
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv {{ apt_repositories_available[repo]['all']['key'] }} \
{% endif %}
{# Version specific repository available? #}
{% if php_version in apt_repositories_available[repo] and 'deb' in apt_repositories_available[repo][php_version] %}
{# #}
{%- endif -%}
{#- Version specific repository available? -#}
{%- if php_version in apt_repositories_available[repo] and 'deb' in apt_repositories_available[repo][php_version] %}
&& echo "{{ apt_repositories_available[repo][php_version]['deb'] }}" > /etc/apt/sources.list.d/{{ repo }}.list \
{# Generic repository available? #}
{% else %}
{# #}
{#- Generic repository available? -#}
{%- else %}
&& echo "{{ apt_repositories_available[repo]['all']['deb'] }}" > /etc/apt/sources.list.d/{{ repo }}.list \
{% endif %}
{% endif %}
{% endfor %}
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
{# #}
{%- endif -%}
{%- endif -%}
{%- endfor %}
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
ack-grep \
aspell \
autoconf \
automake \
bash-completion \
build-essential \
bzip2 \
coreutils \
curl \
@@ -71,12 +79,17 @@ RUN set -x \
git \
git-flow \
git-svn \
graphviz \
hostname \
htop \
imagemagick \
iputils-ping \
jq \
less \
libc-dev \
libffi-dev\
libssl-dev\
libyaml-dev \
make \
mongodb-org-shell \
mongodb-org-tools \
@@ -87,9 +100,14 @@ RUN set -x \
netcat \
nodejs \
openssh-client \
patch \
postgresql-client \
python-cffi \
python-dev \
python-pip \
python-wheel \
redis-tools \
rsync \
rubygems \
ruby-dev \
shellcheck \
@@ -97,14 +115,27 @@ RUN set -x \
subversion \
sudo \
tig \
tree \
unzip \
vim \
w3m \
wget \
whois \
wkhtmltopdf \
xz-utils \
yarn \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
&& rm -rf /var/lib/apt/lists/*
zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \
\
# Get newer pip version
&& pip install --upgrade pip \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
&& rm -rf /var/lib/apt/lists/* \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
RUN set -x \
@@ -135,7 +166,12 @@ RUN set -x \
{% endif %}
{% endif %}
{% endfor %}
&& true
\
&& rm -rf /usr/local/src/composer/cache/* || true \
\
&& find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true \
&& find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true
###
@@ -163,10 +199,20 @@ RUN \
### Verify
###
RUN set -x \
&& echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^{{ php_version }}' \
&& /usr/local/sbin/php-fpm --test \
\
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
&& PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \
\
&& PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \
&& if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \
&& rm -f /usr/local/etc/php/php.ini
RUN set -x \
{% for tool in software_enabled %}
@@ -184,13 +230,16 @@ RUN set -x \
###
### Copy files
###
COPY ./data/php.d/error-reporting.ini /usr/local/etc/php/conf.d/devilbox-error-reporting.ini
COPY ./data/php-ini.d/php-{{ php_version }}.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini
COPY ./data/php-fpm.conf/php-fpm-{{ php_version }}.conf /usr/local/etc/php-fpm.conf
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/
COPY ./data/bash-devilbox /etc/bash-devilbox
COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox
###
### Volumes
###

Some files were not shown because too many files have changed in this diff Show More