From f9782dbab6e79eeee4788962fa217d10610d8b99 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 23 Feb 2018 08:53:30 +0100 Subject: [PATCH] REL-0.1 Initial Release --- .gitignore | 74 +++ .travis.yml | 316 ++++++++++-- Dockerfiles/base/Dockerfile-5.4 | 71 +++ Dockerfiles/base/Dockerfile-5.5 | 71 +++ Dockerfiles/base/Dockerfile-5.6 | 71 +++ Dockerfiles/base/Dockerfile-7.0 | 71 +++ Dockerfiles/base/Dockerfile-7.1 | 71 +++ Dockerfiles/base/Dockerfile-7.2 | 71 +++ .../data/docker-entrypoint.d/00-base-libs.sh | 140 +++++ .../base/data/docker-entrypoint.d/01-debug.sh | 22 + .../data/docker-entrypoint.d/02-uid-gid.sh | 104 ++++ Dockerfiles/base/data/docker-entrypoint.sh | 51 ++ Dockerfiles/base/data/php-fpm.conf | 5 + Dockerfiles/base/data/php-fpm.d/devilbox.conf | 24 + Dockerfiles/mods/Dockerfile-5.4 | 388 ++++++++++++++ Dockerfiles/mods/Dockerfile-5.5 | 402 +++++++++++++++ Dockerfiles/mods/Dockerfile-5.6 | 404 +++++++++++++++ Dockerfiles/mods/Dockerfile-7.0 | 394 ++++++++++++++ Dockerfiles/mods/Dockerfile-7.1 | 394 ++++++++++++++ Dockerfiles/mods/Dockerfile-7.2 | 399 +++++++++++++++ Dockerfiles/prod/Dockerfile-5.4 | 89 ++++ Dockerfiles/prod/Dockerfile-5.5 | 89 ++++ Dockerfiles/prod/Dockerfile-5.6 | 89 ++++ Dockerfiles/prod/Dockerfile-7.0 | 89 ++++ Dockerfiles/prod/Dockerfile-7.1 | 89 ++++ Dockerfiles/prod/Dockerfile-7.2 | 89 ++++ .../data/docker-entrypoint.d/30-timezone.sh | 60 +++ .../data/docker-entrypoint.d/31-postfix.sh | 71 +++ .../docker-entrypoint.d/32-docker-logs.sh | 116 +++++ .../33-socat-port-forwarding.sh | 204 ++++++++ .../34-custom-ini-files.sh | 58 +++ .../data/docker-entrypoint.d/35-supervisor.sh | 60 +++ Dockerfiles/prod/data/docker-entrypoint.sh | 132 +++++ Dockerfiles/prod/data/postfix.sh | 95 ++++ Dockerfiles/prod/data/supervisord.conf | 9 + LICENSE.md | 21 + build/ansible/DOCKERFILES/Dockerfile-base.j2 | 73 +++ build/ansible/DOCKERFILES/Dockerfile-mods.j2 | 349 +++++++++++++ build/ansible/DOCKERFILES/Dockerfile-prod.j2 | 91 ++++ build/ansible/README.md | 6 + build/ansible/ansible.cfg | 3 + build/ansible/generate.yml | 8 + build/ansible/group_vars/all.yml | 479 ++++++++++++++++++ build/ansible/inventory | 7 + .../ansible/roles/template/defaults/main.yml | 5 + build/ansible/roles/template/tasks/main.yml | 10 + build/gen-readme.sh | 45 ++ 47 files changed, 5950 insertions(+), 29 deletions(-) create mode 100755 .gitignore create mode 100644 Dockerfiles/base/Dockerfile-5.4 create mode 100644 Dockerfiles/base/Dockerfile-5.5 create mode 100644 Dockerfiles/base/Dockerfile-5.6 create mode 100644 Dockerfiles/base/Dockerfile-7.0 create mode 100644 Dockerfiles/base/Dockerfile-7.1 create mode 100644 Dockerfiles/base/Dockerfile-7.2 create mode 100755 Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh create mode 100755 Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh create mode 100755 Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh create mode 100755 Dockerfiles/base/data/docker-entrypoint.sh create mode 100644 Dockerfiles/base/data/php-fpm.conf create mode 100644 Dockerfiles/base/data/php-fpm.d/devilbox.conf create mode 100644 Dockerfiles/mods/Dockerfile-5.4 create mode 100644 Dockerfiles/mods/Dockerfile-5.5 create mode 100644 Dockerfiles/mods/Dockerfile-5.6 create mode 100644 Dockerfiles/mods/Dockerfile-7.0 create mode 100644 Dockerfiles/mods/Dockerfile-7.1 create mode 100644 Dockerfiles/mods/Dockerfile-7.2 create mode 100644 Dockerfiles/prod/Dockerfile-5.4 create mode 100644 Dockerfiles/prod/Dockerfile-5.5 create mode 100644 Dockerfiles/prod/Dockerfile-5.6 create mode 100644 Dockerfiles/prod/Dockerfile-7.0 create mode 100644 Dockerfiles/prod/Dockerfile-7.1 create mode 100644 Dockerfiles/prod/Dockerfile-7.2 create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/30-timezone.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/31-postfix.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/32-docker-logs.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/33-socat-port-forwarding.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/34-custom-ini-files.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.d/35-supervisor.sh create mode 100755 Dockerfiles/prod/data/docker-entrypoint.sh create mode 100755 Dockerfiles/prod/data/postfix.sh create mode 100644 Dockerfiles/prod/data/supervisord.conf create mode 100644 LICENSE.md create mode 100644 build/ansible/DOCKERFILES/Dockerfile-base.j2 create mode 100644 build/ansible/DOCKERFILES/Dockerfile-mods.j2 create mode 100644 build/ansible/DOCKERFILES/Dockerfile-prod.j2 create mode 100644 build/ansible/README.md create mode 100644 build/ansible/ansible.cfg create mode 100644 build/ansible/generate.yml create mode 100644 build/ansible/group_vars/all.yml create mode 100644 build/ansible/inventory create mode 100644 build/ansible/roles/template/defaults/main.yml create mode 100644 build/ansible/roles/template/tasks/main.yml create mode 100755 build/gen-readme.sh diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..beb7276e --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +###################################### +# CUSTOM +###################################### + +build/ansible/*.retry + + + +###################################### +# GENERIC +###################################### + +###### std ###### +.lock +*.log + +###### patches/diffs ###### +*.patch +*.diff +*.orig +*.rej + + +###################################### +# Operating Systems +###################################### + +###### OSX ###### +._* +.DS* +.Spotlight-V100 +.Trashes + +###### Windows ###### +Thumbs.db +ehthumbs.db +Desktop.ini +$RECYCLE.BIN/ +*.lnk + + +###################################### +# Editors +###################################### + +###### Sublime ###### +*.sublime-workspace +*.sublime-project + +###### Eclipse ###### +.classpath +.buildpath +.project +.settings/ + +###### Netbeans ###### +nbproject/private/ + +###### Intellij IDE ###### +.idea/ +.idea_modules/ + +###### vim ###### +*.swp +*.swo +*~ + +###### TextMate ###### +.tm_properties +*.tmproj + +###### BBEdit ###### +*.bbprojectd +*.bbproject diff --git a/.travis.yml b/.travis.yml index 722cd188..ec9b70d9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,35 +1,293 @@ --- +sudo: required +language: python +services: + - docker + env: + global: + - IMAGE: devilbox/php-fpm + # travis encrypt DOCKER_USERNAME=user + # travis encrypt DOCKER_PASSWORD=pass + # Must be regenerated when repository name/owner changes + # DOCKER_USERNAME + - secure: "Y7xt3qZW9Zwrsgdd/aCf8ZqA7I039506ZDf/u/WVzGwNHta5YJJ7XYy8XG7XugyqGGXRVpfBiaqmDH4xsPLXyHXdOt2G38GXZHZXIgJOiEJ6aUfpdUxyeu8XIXkD2MDMmc3Kb27Yub/OadxRMLWEflzRnSXXs3KJ8TsbPHh0yRWDMsmHYOYl16gDGUX1izLkEx4J+9iA3+JwIFZk8by/OUuIIQ93bSNORpwHT8A1j7Y1kh8kYkPZ6nRxWO8xrc2wI1Rbp0X+ivLnOotxDZo53UI/0KroeSckDpoWfoz+B7mP+M+5B6kGlI2pKDNQB/ErYvnya6PdtFSS9skbvepR4tBhUOZDDY7NMRg9m3w0b9T1no+g3A4LBGXy6+OZZoiYAGy9LvqMhFkINqbBhRBX+mZhtG0pNXunfcu5dk81Ni/XpXDiy9JU98jItwsRj4SeaPfSt0LUNNXMS/fEwZyTy6TihN1CM3krJpV30Ic5rN64FRnrRjUuNU4lJ/W36yUhM29gb13ahh+f7sDsYoCzMwDM9HFe0YLb3ar3mW1lb3FuUugU2f2EupgCPY60X2XrY9aSgCfbdiVsA84dbLtRfHTPG7UbEcJW5RH8HS+9qVZBK+AcPqon9jbOJRVh7q99YW+R8X/XeyYpz7amacVmRus80+toZ16bbU7D2Qgjdek=" + # DOCKER_PASSWORD + - secure: "ZRrVOVOkSCS2UxEi1HNF1iKefK4sDT/sPRl1HxMQjLnRRaAMdG0aRnBwQf2YAM2qzhCfN85qt6zZtC4awc2mHiZ88JrAZxBjK6xj4BwOyLbDuzpBsKXnx8Nix+wyYYKSjsC3LOYrsUe+4rvkw3tVvVaX8G2llojwdksF34VDmmHBmzCG/Bsexk7UqC+qw0PZm7BtctQO+IL0btmMDijRDElxfR+AuPvf9JdkhYzw9TOO7Jqd53NssNVGyL+XSV0dfGn8PkZTp1e8D+28pLK4oGVog+Wk7Cq94hSGjk5AkWKvL5441rupG1AA8K3njeDNMKdov4o+dmnkAH7Jh8tjShMhNhoxHce3IzpczjhoE1EyYQcyPf1qdfhV35Xv096iWX5809pp1MZF2oE5eism8JaU9NpGClryVbKVKtup8ko9/tCqz01Czq5Vue40feMkGtdePulg59OhyyPLYldsObw8QlZydkrmgVZe6b+GyybeiHraTfDq4pvTgUrC4Cmm5J3IB5Ig1THEiYKHfRJ5hSSMDDODeBXc8Xh6mFssEVshNx/jbUQWuAVYQFw/GIquVHxr6btbevrWIoD+zmqcc0L98u9pYH8w7b+gMgVJNCC4QQz2NCGGWw9l9/TmLrKJgeXbG18n8D314le1zuna6/VfH9pXIlbNO4hgz5NLHJk=" matrix: - v=5.4 - v=5.5 - v=5.6 - v=7.0 - v=7.1 - v=7.2 + - PHP=5.5 + - PHP=5.5 + - PHP=5.6 + - PHP=7.0 + - PHP=7.1 + - PHP=7.2 + #stages: + # - generate + # - PHP 5.4 + # - PHP 5.5 + # - PHP 5.6 + # - PHP 7.0 + # - PHP 7.1 + # - PHP 7.2 -stages: - - base - - mods - - prod - - work -before_script: - # Regenerate Dockerfiles and make sure nothing has changed (every stage) - - make generate - - git diff-index --quiet HEAD || { echo "Build Changes"; git diff; git status; false; } +# TODO: No need for stages anymore, use simple build matrix and don't repease the code!! +install: + # Get newer docker version + - max=100; i=0; while [ $i -lt $max ]; do if sudo apt-get update; then break; else i=$((i+1)); fi done + - max=100; i=0; while [ $i -lt $max ]; do if sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce; then break; else i=$((i+1)); fi done + - docker version -jobs: - include: - - stage: base - script: - - echo "${v}-base" - - stage: mods - script: - - echo "${v}-mods" - - stage: prod - script: - - echo "${v}-prod" - - stage: work - script: - - echo "${v}-work" + +before_script: + # Build (multiple tries due to network outages) + - max=100; i=0; while [ $i -lt $max ]; do if make build-base-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + - max=100; i=0; while [ $i -lt $max ]; do if make build-mods-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + - max=100; i=0; while [ $i -lt $max ]; do if make build-prod-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + - max=100; i=0; while [ $i -lt $max ]; do if make build-work-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi +script: + # Test + - true +after_success: + # Push + - if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then + docker login --username "${DOCKER_USERNAME}" --password "${DOCKER_PASSWORD}" && + if [ "${TRAVIS_BRANCH}" == "master" ]; then + docker push "${IMAGE}:${PHP}-base"; + docker push "${IMAGE}:${PHP}-mods"; + docker push "${IMAGE}:${PHP}-prod"; + docker push "${IMAGE}:${PHP}-work"; + elif [[ ${TRAVIS_BRANCH} =~ ^(release-[.0-9]+)$ ]]; then + docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}" && + docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}" && + docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}" && + docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}" && + docker push "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}"; + docker push "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}"; + docker push "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}"; + docker push "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}"; + elif [ -n "${TRAVIS_TAG}" ]; then + docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_TAG}" && + docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}" && + docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}" && + docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_TAG}" && + docker push "${IMAGE}:${PHP}-base-${TRAVIS_TAG}"; + docker push "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}"; + docker push "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}"; + docker push "${IMAGE}:${PHP}-work-${TRAVIS_TAG}"; + else + echo "Skipping push to dockerhub on normal branches"; + fi + else + echo "Skipping push to dockerhub on PR"; + fi + # + # + # + # + # + # + # + # + # + #jobs: + # include: + # ############################################################ + # # TEST + # ############################################################ + # - stage: generate + # env: All + # install: skip + # before_script: skip + # script: + # # Regenerate Dockerfiles and make sure nothing has changed (every stage) + # - pip install ansible + # - make generate + # - git diff --quiet || { echo "Build Changes"; git diff; git status; false; } + # ############################################################ + # # BUILD BASE IMAGE + # ############################################################ + # - stage: PHP 5.4 + # env: PHP=5.4 + # before_script: + # # Build (multiple tries due to network outages) + # - max=100; i=0; while [ $i -lt $max ]; do if make build-base-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + # - max=100; i=0; while [ $i -lt $max ]; do if make build-mods-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + # - max=100; i=0; while [ $i -lt $max ]; do if make build-prod-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + # - max=100; i=0; while [ $i -lt $max ]; do if make build-work-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi + # script: + # # Test + # - true + # after_success: + # # Push + # - if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then + # docker login --username "${DOCKER_USERNAME}" --password "${DOCKER_PASSWORD}" && + # if [ "${TRAVIS_BRANCH}" == "master" ]; then + # docker push "${IMAGE}:${PHP}-base"; + # docker push "${IMAGE}:${PHP}-mods"; + # docker push "${IMAGE}:${PHP}-prod"; + # docker push "${IMAGE}:${PHP}-work"; + # elif [[ ${TRAVIS_BRANCH} =~ ^(release-[.0-9]+)$ ]]; then + # docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}" && + # docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}" && + # docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}" && + # docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}" && + # docker push "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}"; + # docker push "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}"; + # docker push "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}"; + # docker push "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}"; + # elif [ -n "${TRAVIS_TAG}" ]; then + # docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_TAG}" && + # docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}" && + # docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}" && + # docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_TAG}" && + # docker push "${IMAGE}:${PHP}-base-${TRAVIS_TAG}"; + # docker push "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}"; + # docker push "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}"; + # docker push "${IMAGE}:${PHP}-work-${TRAVIS_TAG}"; + # else + # echo "Skipping push to dockerhub on normal branches"; + # fi + # else + # echo "Skipping push to dockerhub on PR"; + # fi + # - stage: Build base image + # env: PHP=5.5 t=base + # before_script: + # # Build + # - max=100; i=0; while [ $i -lt $max ]; do if make build-${t}-${PHP//.}; then break; else i=$((i+1)); fi; done + # script: + # # Test + # - result=1; false + # after_success: + # # Push + # - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + # - docker push "${IMAGE}:${PHP}-${t}"; + # + # - stage: Build base image + # env: PHP=5.6 t=base + # script: + # - max=100; i=0; while [ $i -lt $max ]; do if make build-${t}-${PHP//.}; then break; else i=$((i+1)); fi + # - if [ $i -gt 98 ]; then false; fi + # - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + # - docker push "${IMAGE}:${PHP}-${t}" + # + # - stage: Build base image + # env: PHP=7.0 t=base + # script: + # - max=100; i=0; while [ $i -lt $max ]; do if make build-${t}-${PHP//.}; then break; else i=$((i+1)); fi + # - if [ $i -gt 98 ]; then false; fi + # - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + # - docker push "${IMAGE}:${PHP}-${t}" + # + # - stage: Build base image + # env: PHP=7.1 t=base + # script: + # - max=100; i=0; while [ $i -lt $max ]; do if make build-${t}-${PHP//.}; then break; else i=$((i+1)); fi + # - if [ $i -gt 98 ]; then false; fi + # - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + # - docker push "${IMAGE}:${PHP}-${t}" + # + # - stage: Build base image + # env: PHP=7.2 t=base + # script: + # - max=100; i=0; while [ $i -lt $max ]; do if make build-${t}-${PHP//.}; then break; else i=$((i+1)); fi + # - if [ $i -gt 98 ]; then false; fi + # - docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + # - docker push "${IMAGE}:${PHP}-${t}" + # ############################################################ + # # BUILD MODS IMAGE + # ############################################################ + # - stage: Build mods image + # env: PHP-5.4 + # script: + # - make build-mods-54 + # + # - stage: Build mods image + # env: PHP-5.5 + # script: + # - make build-mods-55 + # + # - stage: Build mods image + # env: PHP-5.6 + # script: + # - make build-mods-56 + # + # - stage: Build mods image + # env: PHP-7.0 + # script: + # - make build-mods-70 + # + # - stage: Build mods image + # env: PHP-7.1 + # script: + # - make build-mods-71 + # + # - stage: Build mods image + # env: PHP-7.2 + # script: + # - make build-mods-72 + # ############################################################ + # # BUILD PROD IMAGE + # ############################################################ + # - stage: Build prod image + # env: PHP-5.4 + # script: + # - make build-prod-5.4 + # + # - stage: Build prod image + # env: PHP-5.5 + # script: + # - make build-prod-5.5 + # + # - stage: Build prod image + # env: PHP-5.6 + # script: + # - make build-prod-5.6 + # + # - stage: Build prod image + # env: PHP-7.0 + # script: + # - make build-prod-7.0 + # + # - stage: Build prod image + # env: PHP-7.1 + # script: + # - make build-prod-7.1 + # + # - stage: Build prod image + # env: PHP-7.2 + # script: + # - make build-prod-7.2 + # ############################################################ + # # BUILD WORK IMAGE + # ############################################################ + # - stage: Build work image + # env: PHP-5.4 + # script: + # - make build-work-5.4 + # + # - stage: Build work image + # env: PHP-5.5 + # script: + # - make build-work-5.5 + # + # - stage: Build work image + # env: PHP-5.6 + # script: + # - make build-work-5.6 + # + # - stage: Build work image + # env: PHP-7.0 + # script: + # - make build-work-7.0 + # + # - stage: Build work image + # env: PHP-7.1 + # script: + # - make build-work-7.1 + # + # - stage: Build work image + # env: PHP-7.2 + # script: + # - make build-work-7.2 diff --git a/Dockerfiles/base/Dockerfile-5.4 b/Dockerfiles/base/Dockerfile-5.4 new file mode 100644 index 00000000..5da2e791 --- /dev/null +++ b/Dockerfiles/base/Dockerfile-5.4 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:5.4-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.4 Image" \ + image="devilbox/php-fpm" \ + tag="5.4-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/Dockerfile-5.5 b/Dockerfiles/base/Dockerfile-5.5 new file mode 100644 index 00000000..9fafe2f2 --- /dev/null +++ b/Dockerfiles/base/Dockerfile-5.5 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:5.5-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.5 Image" \ + image="devilbox/php-fpm" \ + tag="5.5-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/Dockerfile-5.6 b/Dockerfiles/base/Dockerfile-5.6 new file mode 100644 index 00000000..02175200 --- /dev/null +++ b/Dockerfiles/base/Dockerfile-5.6 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:5.6-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.6 Image" \ + image="devilbox/php-fpm" \ + tag="5.6-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/Dockerfile-7.0 b/Dockerfiles/base/Dockerfile-7.0 new file mode 100644 index 00000000..174bae94 --- /dev/null +++ b/Dockerfiles/base/Dockerfile-7.0 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:7.0-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.0 Image" \ + image="devilbox/php-fpm" \ + tag="7.0-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/Dockerfile-7.1 b/Dockerfiles/base/Dockerfile-7.1 new file mode 100644 index 00000000..827bd16f --- /dev/null +++ b/Dockerfiles/base/Dockerfile-7.1 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:7.1-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.1 Image" \ + image="devilbox/php-fpm" \ + tag="7.1-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/Dockerfile-7.2 b/Dockerfiles/base/Dockerfile-7.2 new file mode 100644 index 00000000..7e571a1a --- /dev/null +++ b/Dockerfiles/base/Dockerfile-7.2 @@ -0,0 +1,71 @@ +# Auto-generated via Ansible +FROM php:7.2-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.2 Image" \ + image="devilbox/php-fpm" \ + tag="7.2-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh b/Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh new file mode 100755 index 00000000..1094b2b1 --- /dev/null +++ b/Dockerfiles/base/data/docker-entrypoint.d/00-base-libs.sh @@ -0,0 +1,140 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + +############################################################ +# Functions +############################################################ + +### +### Log to stdout/stderr +### +log() { + log_lvl="${1}" + log_msg="${2}" + + log_clr_ok="\033[0;32m" + log_clr_info="\033[0;34m" + log_clr_warn="\033[0;33m" + log_clr_err="\033[0;31m" + log_clr_rst="\033[0m" + + if [ "${log_lvl}" = "ok" ]; then + if [ "${DEBUG_LEVEL}" -gt "0" ]; then + printf "${log_clr_ok}[OK] %s${log_clr_rst}\n" "${log_msg}" + fi + elif [ "${log_lvl}" = "info" ]; then + if [ "${DEBUG_LEVEL}" -gt "0" ]; then + printf "${log_clr_info}[INFO] %s${log_clr_rst}\n" "${log_msg}" + fi + elif [ "${log_lvl}" = "warn" ]; then + printf "${log_clr_warn}[WARN] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr + elif [ "${log_lvl}" = "err" ]; then + printf "${log_clr_err}[ERR] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr + else + printf "${log_clr_err}[???] %s${log_clr_rst}\n" "${log_msg}" 1>&2 # stdout -> stderr + fi + + unset -v log_lvl + unset -v log_msg + unset -v log_clr_ok + unset -v log_clr_info + unset -v log_clr_warn + unset -v log_clr_err + unset -v log_clr_rst +} + + +### +### Wrapper for run_run command +### +run() { + run_cmd="${1}" + + run_clr_red="\033[0;31m" + run_clr_green="\033[0;32m" + run_clr_reset="\033[0m" + + if [ "${DEBUG_LEVEL}" -gt "1" ]; then + printf "${run_clr_red}%s \$ ${run_clr_green}${run_cmd}${run_clr_reset}\n" "$( whoami )" + fi + /bin/sh -c "LANG=C LC_ALL=C ${run_cmd}" + + unset -v run_cmd + unset -v run_clr_red + unset -v run_clr_green + unset -v run_clr_reset +} + + +### +### Is argument an integer? +### +isint() { + echo "${1}" | grep -Eq '^([0-9]|[1-9][0-9]*)$' +} + + +### +### Is env variable set? +### +env_set() { + if set | grep "^${1}=" >/dev/null 2>&1; then + return 0 + else + return 1 + fi +} + + +### +### Get env variable by name +### +env_get() { + if ! env_set "${1}"; then + return 1 + fi + + env_get_value="$( set | grep "^${1}=" | awk -F '=' '{for (i=2; i/dev/null 2>&1; then + log "err" "grep not found, but required." + exit 1 +fi +if ! command -v sed >/dev/null 2>&1; then + log "err" "sed not found, but required." + exit 1 +fi +if ! command -v awk >/dev/null 2>&1; then + log "err" "awk not found, but required." + exit 1 +fi +if ! command -v getent >/dev/null 2>&1; then + log "err" "getent not found, but required." + exit 1 +fi diff --git a/Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh b/Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh new file mode 100755 index 00000000..e059dcc0 --- /dev/null +++ b/Dockerfiles/base/data/docker-entrypoint.d/01-debug.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e +set -u + + +############################################################ +# Functions +############################################################ + +### +### Debug level +### +get_debug_level() { + if ! env_set "${1}"; then + # Return default specified value + echo "${2}" + else + # Return env value + env_get "${1}" + fi +} diff --git a/Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh b/Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh new file mode 100755 index 00000000..48bb0136 --- /dev/null +++ b/Dockerfiles/base/data/docker-entrypoint.d/02-uid-gid.sh @@ -0,0 +1,104 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + +set -e +set -u + + +############################################################ +# Functions +############################################################ + +### +### Change UID +### +set_uid() { + uid_varname="${1}" + + if ! env_set "${uid_varname}"; then + log "info" "\$${uid_varname} not set. Keeping default uid for '${MY_USER}'." + else + uid_env_uid="$( env_get "${uid_varname}" )" + + if ! isint "${uid_env_uid}"; then + log "err" "\$${uid_varname} is not an integer: '${uid_env_uid}'" + exit 1 + else + if uid_getent_row="$( getent passwd "${uid_env_uid}" )"; then + uid_getent_name="$( echo "${uid_getent_row}" | awk -F ':' '{print $1}' )" + if [ "${uid_getent_name}" != "${MY_USER}" ]; then + log "warn" "User with ${uid_env_uid} already exists: ${uid_getent_name}" + log "info" "Changing UID of ${uid_getent_name} to 9999" + run "usermod -u 9999 ${uid_getent_name}" + fi + fi + log "info" "Changing user '${MY_USER}' uid to: ${uid_env_uid}" + run "usermod -u ${uid_env_uid} ${MY_USER}" + fi + fi + + # Fix homedir permissions + run "chown -R ${MY_USER} /home/${MY_USER}" + + unset -v uid_varname + unset -v uid_env_uid + unset -v uid_getent_row + unset -v uid_getent_name +} + + +### +### Change GID +### +set_gid() { + gid_varname="${1}" + + if ! env_set "${gid_varname}"; then + log "info" "\$${gid_varname} not set. Keeping default gid for '${MY_GROUP}'." + else + # Retrieve the value from env + gid_env_gid="$( env_get "${gid_varname}" )" + + if ! isint "${gid_env_gid}"; then + log "err" "\$${gid_varname} is not an integer: '${gid_env_gid}'" + exit 1 + else + if gid_getent_row="$( getent group "${gid_env_gid}" )"; then + gid_getent_name="$( echo "${gid_getent_row}" | awk -F ':' '{print $1}' )" + if [ "${gid_getent_name}" != "${MY_GROUP}" ]; then + log "warn" "Group with ${gid_env_gid} already exists: ${gid_getent_name}" + log "info" "Changing GID of ${gid_getent_name} to 9999" + run "groupmod -g 9999 ${gid_getent_name}" + fi + fi + log "info" "Changing group '${MY_GROUP}' gid to: ${gid_env_gid}" + run "groupmod -g ${gid_env_gid} ${MY_GROUP}" + fi + fi + + # Fix homedir permissions + run "chown -R :${MY_GROUP} /home/${MY_USER}" + + unset -v gid_varname + unset -v gid_env_gid + unset -v gid_getent_row + unset -v gid_getent_name +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v usermod >/dev/null 2>&1; then + log "err" "usermod not found, but required." + exit 1 +fi +if ! command -v groupmod >/dev/null 2>&1; then + log "err" "groupmod not found, but required." + exit 1 +fi diff --git a/Dockerfiles/base/data/docker-entrypoint.sh b/Dockerfiles/base/data/docker-entrypoint.sh new file mode 100755 index 00000000..ae79564c --- /dev/null +++ b/Dockerfiles/base/data/docker-entrypoint.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +### +### Settings +### +set -e +set -u + +CONFIG_DIR="/docker-entrypoint.d" + + +### +### Source libs +### +init="$( find "${CONFIG_DIR}" -name '*.sh' -type f | sort -u )" +for f in ${init}; do + # shellcheck disable=SC1090 + . "${f}" +done + + +### +### Set Debug level +### +DEBUG_LEVEL="$( get_debug_level "DEBUG_ENTRYPOINT" "0" )" +log "info" "Debug level: ${DEBUG_LEVEL}" + + + +############################################################# +## Entry Point +############################################################# + +### +### Change uid/gid +### +set_uid "NEW_UID" +set_gid "NEW_GID" + + +### +### Startup +### +log "info" "Starting $( php-fpm -v 2>&1 | head -1 )" +exec /usr/local/sbin/php-fpm diff --git a/Dockerfiles/base/data/php-fpm.conf b/Dockerfiles/base/data/php-fpm.conf new file mode 100644 index 00000000..93be5cd6 --- /dev/null +++ b/Dockerfiles/base/data/php-fpm.conf @@ -0,0 +1,5 @@ +[global] +error_log = /proc/self/fd/2 +log_level = notice +daemonize = no +include = /usr/local/etc/php-fpm.d/*.conf diff --git a/Dockerfiles/base/data/php-fpm.d/devilbox.conf b/Dockerfiles/base/data/php-fpm.d/devilbox.conf new file mode 100644 index 00000000..ace645af --- /dev/null +++ b/Dockerfiles/base/data/php-fpm.d/devilbox.conf @@ -0,0 +1,24 @@ +[www] + +; User and Group +user = devilbox +group = devilbox + +; if we send this to /proc/self/fd/1, it never appears +access.log = /proc/self/fd/2 + +; Ensure to listen here +listen = 9000 + +; Keep env variables set by docker +clear_env = no + +; Ensure worker stdout and stderr are sent to the main error log. +catch_workers_output = yes + +; Pool config +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 diff --git a/Dockerfiles/mods/Dockerfile-5.4 b/Dockerfiles/mods/Dockerfile-5.4 new file mode 100644 index 00000000..4f6cf562 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-5.4 @@ -0,0 +1,388 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.4-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.4 Image" \ + image="devilbox/php-fpm" \ + tag="5.4-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libxml2-dev \ + libmm-dev \ + libxml2-dev \ + libmcrypt-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + libssl-dev \ + zlib1g-dev \ + libmagickwand-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu52 \ + libtidy-0.99-0 \ + libpng12-0 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx1 \ + libfreetype6 \ + librecode0 \ + libpq5 \ + snmp \ + libpq5 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libmcrypt4 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq1 \ + libnghttp2-5 \ + libmagickwand-6.q16-2 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install pdo_mysql \ + && /usr/local/bin/docker-php-ext-install tokenizer \ + && /usr/local/bin/docker-php-ext-install dba \ + && /usr/local/bin/docker-php-ext-install intl \ + && /usr/local/bin/docker-php-ext-install shmop \ + && /usr/local/bin/docker-php-ext-install tidy \ + && /usr/local/bin/docker-php-ext-install bcmath \ + && /usr/local/bin/docker-php-ext-install phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install recode \ + && /usr/local/bin/docker-php-ext-install mysql \ + && /usr/local/bin/docker-php-ext-install pcntl \ + && /usr/local/bin/docker-php-ext-install curl \ + && /usr/local/bin/docker-php-ext-install sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install ftp \ + && /usr/local/bin/docker-php-ext-install iconv \ + && /usr/local/bin/docker-php-ext-install pdo_pgsql \ + && /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \ + && /usr/local/bin/docker-php-ext-install zip \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install snmp \ + && /usr/local/bin/docker-php-ext-install gettext \ + && /usr/local/bin/docker-php-ext-install pgsql \ + && /usr/local/bin/docker-php-ext-install json \ + && /usr/local/bin/docker-php-ext-install mbstring \ + && 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 \ + && /usr/local/bin/docker-php-ext-install sysvmsg \ + && 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 sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install soap \ + && /usr/local/bin/docker-php-ext-install pdo_firebird \ + && /usr/local/bin/docker-php-ext-install hash \ + && /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-install pdo \ + && /usr/local/bin/docker-php-ext-install ctype \ + && /usr/local/bin/docker-php-ext-install fileinfo \ + && /usr/local/bin/docker-php-ext-install sysvsem \ + && /usr/local/bin/docker-php-ext-install pspell \ + && /usr/local/bin/docker-php-ext-install mysqli \ + && /usr/local/bin/docker-php-ext-install pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install bz2 \ + && /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install wddx \ + && /usr/local/bin/docker-php-ext-install exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install xmlreader \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install session \ + && /usr/local/bin/docker-php-ext-install posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install simplexml \ + && /usr/local/bin/docker-php-ext-install calendar \ + && /usr/local/bin/docker-php-ext-install mcrypt \ + && /usr/local/bin/docker-php-ext-install enchant \ + && /usr/local/bin/docker-php-ext-install xsl \ + \ + \ + && pecl install xdebug-2.4.1 \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole-1.9.23 \ + && docker-php-ext-enable swoole \ + && pecl install mongodb-1.2.11 \ + && docker-php-ext-enable mongodb \ + && pecl install memcache \ + && docker-php-ext-enable memcache \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install uploadprogress \ + && docker-php-ext-enable uploadprogress \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack-0.5.7 \ + && docker-php-ext-enable msgpack \ + && pecl install memcached-2.2.0 \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu-4.0.11 \ + && docker-php-ext-enable apcu \ + \ + \ + && git clone -v https://github.com/phalcon/cphalcon /tmp/phalcon \ + && cd /tmp/phalcon \ + && git checkout phalcon-v2.0.13 \ + && cd /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^mysql$' \ + && php-fpm -m | grep -oiE '^mysql$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && php -m | grep -oiE '^pspell$' \ + && php-fpm -m | grep -oiE '^pspell$' \ + && php -m | grep -oiE '^mysqli$' \ + && php-fpm -m | grep -oiE '^mysqli$' \ + && php -m | grep -oiE '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^xmlreader$' \ + && php-fpm -m | grep -oiE '^xmlreader$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^memcache$' \ + && php-fpm -m | grep -oiE '^memcache$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/mods/Dockerfile-5.5 b/Dockerfiles/mods/Dockerfile-5.5 new file mode 100644 index 00000000..220d3c90 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-5.5 @@ -0,0 +1,402 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.5-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.5 Image" \ + image="devilbox/php-fpm" \ + tag="5.5-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libedit-dev \ + libreadline-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libxml2-dev \ + libmm-dev \ + libxml2-dev \ + libmcrypt-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + zlib1g-dev \ + libmagickwand-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu52 \ + libtidy-0.99-0 \ + libpng12-0 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx1 \ + libfreetype6 \ + librecode0 \ + libpq5 \ + snmp \ + libpq5 \ + libfbclient2 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libmcrypt4 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq1 \ + libnghttp2-5 \ + libmagickwand-6.q16-2 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && /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 \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \ + && 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) sysvmsg \ + && 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) sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) pdo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlreader \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + \ + \ + && pecl install xdebug-2.5.5 \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole-1.9.23 \ + && docker-php-ext-enable swoole \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + && pecl install memcache \ + && docker-php-ext-enable memcache \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install uploadprogress \ + && docker-php-ext-enable uploadprogress \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack-0.5.7 \ + && docker-php-ext-enable msgpack \ + && pecl install memcached-2.2.0 \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu-4.0.11 \ + && docker-php-ext-enable apcu \ + \ + \ + && 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 /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^mysql$' \ + && php-fpm -m | grep -oiE '^mysql$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && php -m | grep -oiE '^pspell$' \ + && php-fpm -m | grep -oiE '^pspell$' \ + && php -m | grep -oiE '^mysqli$' \ + && php-fpm -m | grep -oiE '^mysqli$' \ + && php -m | grep -oiE '^readline$' \ + && php-fpm -m | grep -oiE '^readline$' \ + && php -m | grep -oiE '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^xmlreader$' \ + && php-fpm -m | grep -oiE '^xmlreader$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^memcache$' \ + && php-fpm -m | grep -oiE '^memcache$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/mods/Dockerfile-5.6 b/Dockerfiles/mods/Dockerfile-5.6 new file mode 100644 index 00000000..f5af1833 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-5.6 @@ -0,0 +1,404 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.6-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.6 Image" \ + image="devilbox/php-fpm" \ + tag="5.6-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libzip-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libedit-dev \ + libreadline-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libxml2-dev \ + libmm-dev \ + libxml2-dev \ + libmcrypt-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + zlib1g-dev \ + libmagickwand-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu52 \ + libtidy-0.99-0 \ + libpng12-0 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx1 \ + libfreetype6 \ + librecode0 \ + libpq5 \ + libzip2 \ + snmp \ + libpq5 \ + libfbclient2 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libmcrypt4 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq1 \ + libnghttp2-5 \ + libmagickwand-6.q16-2 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && /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 \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \ + && 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) sysvmsg \ + && 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) sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) pdo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure xmlreader --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlreader \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + \ + \ + && pecl install xdebug-2.5.5 \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole-1.9.23 \ + && docker-php-ext-enable swoole \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + && pecl install memcache \ + && docker-php-ext-enable memcache \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install uploadprogress \ + && docker-php-ext-enable uploadprogress \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack-0.5.7 \ + && docker-php-ext-enable msgpack \ + && pecl install memcached-2.2.0 \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu-4.0.11 \ + && docker-php-ext-enable apcu \ + \ + \ + && 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 /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^mysql$' \ + && php-fpm -m | grep -oiE '^mysql$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && php -m | grep -oiE '^pspell$' \ + && php-fpm -m | grep -oiE '^pspell$' \ + && php -m | grep -oiE '^mysqli$' \ + && php-fpm -m | grep -oiE '^mysqli$' \ + && php -m | grep -oiE '^readline$' \ + && php-fpm -m | grep -oiE '^readline$' \ + && php -m | grep -oiE '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^xmlreader$' \ + && php-fpm -m | grep -oiE '^xmlreader$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^memcache$' \ + && php-fpm -m | grep -oiE '^memcache$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/mods/Dockerfile-7.0 b/Dockerfiles/mods/Dockerfile-7.0 new file mode 100644 index 00000000..1e3af516 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-7.0 @@ -0,0 +1,394 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.0-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.0 Image" \ + image="devilbox/php-fpm" \ + tag="7.0-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + libwebp-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libzip-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libedit-dev \ + libreadline-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libmm-dev \ + libxml2-dev \ + libmcrypt-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + libmagickwand-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu52 \ + libtidy-0.99-0 \ + libpng12-0 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx1 \ + libfreetype6 \ + libwebp-dev \ + librecode0 \ + libpq5 \ + libzip2 \ + snmp \ + libpq5 \ + libfbclient2 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libmcrypt4 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq1 \ + libnghttp2-5 \ + libmagickwand-6.q16-2 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && /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 \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \ + && 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) sysvmsg \ + && 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) sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) pdo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + \ + \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole \ + && docker-php-ext-enable swoole \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack \ + && docker-php-ext-enable msgpack \ + && pecl install memcached \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu \ + && docker-php-ext-enable apcu \ + \ + \ + && git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \ + && cd /tmp/uploadprogress \ + && git checkout master \ + && cd /tmp/uploadprogress && phpize && ./configure --enable-uploadprogress && make -j$(getconf _NPROCESSORS_ONLN) && make install \ + && docker-php-ext-enable uploadprogress \ + && cd / && rm -rf /tmp/uploadprogress \ + && 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 /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && 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 '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/mods/Dockerfile-7.1 b/Dockerfiles/mods/Dockerfile-7.1 new file mode 100644 index 00000000..762d3af8 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-7.1 @@ -0,0 +1,394 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.1-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.1 Image" \ + image="devilbox/php-fpm" \ + tag="7.1-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + libwebp-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libzip-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libedit-dev \ + libreadline-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libmm-dev \ + libxml2-dev \ + libmcrypt-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + libmagickwand-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu52 \ + libtidy-0.99-0 \ + libpng12-0 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx1 \ + libfreetype6 \ + libwebp-dev \ + librecode0 \ + libpq5 \ + libzip2 \ + snmp \ + libpq5 \ + libfbclient2 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libmcrypt4 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq1 \ + libnghttp2-5 \ + libmagickwand-6.q16-2 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && /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 \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \ + && 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) sysvmsg \ + && 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) sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) pdo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + \ + \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole \ + && docker-php-ext-enable swoole \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack \ + && docker-php-ext-enable msgpack \ + && pecl install memcached \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu \ + && docker-php-ext-enable apcu \ + \ + \ + && git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \ + && cd /tmp/uploadprogress \ + && git checkout master \ + && cd /tmp/uploadprogress && phpize && ./configure --enable-uploadprogress && make -j$(getconf _NPROCESSORS_ONLN) && make install \ + && docker-php-ext-enable uploadprogress \ + && cd / && rm -rf /tmp/uploadprogress \ + && 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 /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && 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 '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/mods/Dockerfile-7.2 b/Dockerfiles/mods/Dockerfile-7.2 new file mode 100644 index 00000000..b6de8b59 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-7.2 @@ -0,0 +1,399 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.2-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.2 Image" \ + image="devilbox/php-fpm" \ + tag="7.2-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + libicu-dev \ + libtidy-dev \ + libssl-dev \ + libpng-dev \ + libjpeg-dev \ + libxpm-dev \ + libvpx-dev \ + zlib1g-dev \ + libfreetype6-dev \ + libwebp-dev \ + librecode-dev \ + libcurl4-openssl-dev \ + libssl-dev \ + libpq-dev \ + zlib1g-dev \ + libzip-dev \ + libsodium-dev \ + libxml2-dev \ + libssl-dev \ + libsnmp-dev \ + snmp \ + libpq-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libldap2-dev \ + libsasl2-dev \ + libgmp-dev \ + libxml2-dev \ + libfbclient2 \ + libib-util \ + firebird-dev \ + libxml2-dev \ + libpspell-dev \ + libedit-dev \ + libreadline-dev \ + libsqlite3-dev \ + libc-client-dev \ + libkrb5-dev \ + libcurl4-openssl-dev \ + libbz2-dev \ + libxml2-dev \ + libxml2-dev \ + libxml2-dev \ + freetds-dev \ + libmm-dev \ + libxml2-dev \ + libenchant-dev \ + libxslt-dev \ + librabbitmq-dev \ + libnghttp2-dev \ + libssl-dev \ + libnghttp2-5 \ + libmagickwand-dev \ + libmcrypt-dev \ + zlib1g-dev \ + libmemcached-dev \ + git \ + ca-certificates + +ENV RUN_DEPS \ + libicu57 \ + libtidy5 \ + libpng16-16 \ + libjpeg62-turbo \ + libxpm4 \ + libvpx4 \ + libfreetype6 \ + libwebp6 \ + librecode0 \ + libpq5 \ + libzip4 \ + snmp \ + libpq5 \ + libfbclient2 \ + libfbclient2 \ + libaspell15 \ + libc-client2007e \ + libsybdb5 \ + libenchant1c2a \ + libxslt1.1 \ + librabbitmq4 \ + libnghttp2-14 \ + libmagickwand-6.q16-3 \ + libmcrypt4 \ + libmemcachedutil2 \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tokenizer \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) phar \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) curl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && /usr/local/bin/docker-php-ext-configure ftp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) iconv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && /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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sodium \ + && /usr/local/bin/docker-php-ext-configure xmlwriter --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlwriter \ + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) json \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \ + && 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) sysvmsg \ + && 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) sysvshm \ + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) hash \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) pdo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ctype \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) fileinfo \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) readline \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_sqlite \ + && 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 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && /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-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && /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 dom --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dom \ + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && /usr/local/bin/docker-php-ext-configure session --with-mm \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) session \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) posix \ + && /usr/local/bin/docker-php-ext-configure simplexml --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) simplexml \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + \ + \ + && pecl install xdebug \ + && docker-php-ext-enable xdebug \ + && echo "/usr" | pecl install amqp \ + && docker-php-ext-enable amqp \ + && pecl install swoole \ + && docker-php-ext-enable swoole \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + && pecl install redis \ + && docker-php-ext-enable redis \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ + && pecl install msgpack \ + && docker-php-ext-enable msgpack \ + && pecl install mcrypt-1.0.1 \ + && docker-php-ext-enable mcrypt \ + && pecl install memcached \ + && docker-php-ext-enable memcached \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + && pecl install apcu \ + && docker-php-ext-enable apcu \ + \ + \ + && git clone -v https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \ + && cd /tmp/uploadprogress \ + && git checkout master \ + && cd /tmp/uploadprogress && phpize && ./configure --enable-uploadprogress && make -j$(getconf _NPROCESSORS_ONLN) && make install \ + && docker-php-ext-enable uploadprogress \ + && cd / && rm -rf /tmp/uploadprogress \ + && 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 /tmp/phalcon && cd build && ./install \ + && docker-php-ext-enable phalcon \ + && cd / && rm -rf /tmp/phalcon \ + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +### +### Verify +### +RUN set -x \ + && 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 \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && php -m | grep -oiE '^sodium$' \ + && php-fpm -m | grep -oiE '^sodium$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && 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 '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^xdebug$' \ + && php-fpm -m | grep -oiE '^xdebug$' \ + && php -m | grep -oiE '^amqp$' \ + && php-fpm -m | grep -oiE '^amqp$' \ + && php -m | grep -oiE '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^imagick$' \ + && php-fpm -m | grep -oiE '^imagick$' \ + && php -m | grep -oiE '^msgpack$' \ + && php-fpm -m | grep -oiE '^msgpack$' \ + && php -m | grep -oiE '^mcrypt$' \ + && php-fpm -m | grep -oiE '^mcrypt$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^apcu$' \ + && php-fpm -m | grep -oiE '^apcu$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^phalcon$' \ + && php-fpm -m | grep -oiE '^phalcon$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-5.4 b/Dockerfiles/prod/Dockerfile-5.4 new file mode 100644 index 00000000..b9ea0aeb --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-5.4 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.4-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.4 Image" \ + image="devilbox/php-fpm" \ + tag="5.4-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-5.5 b/Dockerfiles/prod/Dockerfile-5.5 new file mode 100644 index 00000000..6d046c9f --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-5.5 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.5-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.5 Image" \ + image="devilbox/php-fpm" \ + tag="5.5-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-5.6 b/Dockerfiles/prod/Dockerfile-5.6 new file mode 100644 index 00000000..0939ab32 --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-5.6 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:5.6-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 5.6 Image" \ + image="devilbox/php-fpm" \ + tag="5.6-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-7.0 b/Dockerfiles/prod/Dockerfile-7.0 new file mode 100644 index 00000000..f5889599 --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-7.0 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.0-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.0 Image" \ + image="devilbox/php-fpm" \ + tag="7.0-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-7.1 b/Dockerfiles/prod/Dockerfile-7.1 new file mode 100644 index 00000000..552f0570 --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-7.1 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.1-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.1 Image" \ + image="devilbox/php-fpm" \ + tag="7.1-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-7.2 b/Dockerfiles/prod/Dockerfile-7.2 new file mode 100644 index 00000000..0b14c07b --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-7.2 @@ -0,0 +1,89 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:7.2-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.2 Image" \ + image="devilbox/php-fpm" \ + tag="7.2-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +### +### Verify +### +RUN set -x \ + && 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 + + +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/30-timezone.sh b/Dockerfiles/prod/data/docker-entrypoint.d/30-timezone.sh new file mode 100755 index 00000000..de5d7315 --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/30-timezone.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + +############################################################ +# Functions +############################################################ + +### +### Change Timezone +### +set_timezone() { + tz_env_varname="${1}" + tz_php_ini="${2}" + + if ! env_set "${tz_env_varname}"; then + log "info" "\$${tz_env_varname} not set." + log "info" "Setting PHP: timezone=UTC" + run "sed -i'' 's|^[[:space:]]*;*[[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = UTF|g' ${tz_php_ini}" + else + tz_timezone="$( env_get "${tz_env_varname}" )" + if [ -f "/usr/share/zoneinfo/${tz_timezone}" ]; then + # Unix Time + log "info" "Setting container timezone to: ${tz_timezone}" + run "rm /etc/localtime" + run "ln -s /usr/share/zoneinfo/${tz_timezone} /etc/localtime" + + # PHP Time + log "info" "Setting PHP: timezone=${tz_timezone}" + run "sed -i'' 's|^[[:space:]]*;*[[:space:]]*date\.timezone[[:space:]]*=.*$|date.timezone = ${tz_timezone}|g' ${tz_php_ini}" + else + log "err" "Invalid timezone for \$${tz_env_varname}." + log "err" "\$TIMEZONE: '${tz_timezone}' does not exist." + exit 1 + fi + fi + log "info" "Docker date set to: $(date)" + + unset -v tz_env_varname + unset -v tz_php_ini + unset -v tz_timezone +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v sed >/dev/null 2>&1; then + echo "sed not found, but required." + exit 1 +fi diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/31-postfix.sh b/Dockerfiles/prod/data/docker-entrypoint.d/31-postfix.sh new file mode 100755 index 00000000..fcaa8fef --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/31-postfix.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + + +############################################################ +# Functions +############################################################ + +### +### Setup Postfix for catch-all +### +set_postfix() { + postfix_env_varname="${1}" + + if ! env_set "${postfix_env_varname}"; then + log "info" "\$${postfix_env_varname} not set." + log "info" "Disabling sending of emails" + else + postfix_env_value="$( env_get "${postfix_env_varname}" )" + if [ "${postfix_env_value}" = "1" ]; then + log "info" "Enabling sending of emails" + + # Add Mail file if it does not exist + if [ ! -f "/var/mail/${MY_USER}" ]; then + run "touch /var/mail/${MY_USER}" + fi + + # Fix mail user permissions after mount + run "chmod 0644 /var/mail/${MY_USER}" + run "chown ${MY_USER}:${MY_GROUP} /var/mail" + run "chown ${MY_USER}:${MY_GROUP} /var/mail/${MY_USER}" + + # Postfix configuration + run "postconf -e 'inet_protocols=ipv4'" + run "postconf -e 'virtual_alias_maps=pcre:/etc/postfix/virtual'" + run "echo '/.*@.*/ ${MY_USER}' >> /etc/postfix/virtual" + + run "newaliases" + + elif [ "${postfix_env_value}" = "0" ]; then + log "info" "Disabling sending of emails." + + else + log "err" "Invalid value for \$${postfix_env_varname}" + log "err" "Only 1 (for on) or 0 (for off) are allowed" + exit 1 + fi + fi + + unset -v postfix_env_varname + unset -v postfix_env_value +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v postconf >/dev/null 2>&1; then + echo "postconf not found, but required." + exit 1 +fi diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/32-docker-logs.sh b/Dockerfiles/prod/data/docker-entrypoint.d/32-docker-logs.sh new file mode 100755 index 00000000..327aca65 --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/32-docker-logs.sh @@ -0,0 +1,116 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + + +############################################################ +# Helper Functions +############################################################ + +# Check if PHP-FPM config files contain valid logging directives +_validate_docker_logs() { + vdl_fpm_error_log_conf="${1}" + vdl_fpm_access_log_conf="${2}" + + if [ ! -f "${vdl_fpm_error_log_conf}" ]; then + log "err" "PHP-FPM Error log config file does not exist in: ${vdl_fpm_error_log_conf}" + exit 1 + fi + if [ ! -f "${vdl_fpm_access_log_conf}" ]; then + log "err" "PHP-FPM Access log config file does not exist in: ${dl_fpm_access_log_conf}" + exit 1 + fi + + if ! grep -Eq '^error_log.*$' "${vdl_fpm_error_log_conf}"; then + log "err" "PHP-FPM Error log config file has no error logging directive" + exit 1 + fi + if ! grep -Eq '^access\.log.*$' "${vdl_fpm_access_log_conf}"; then + log "err" "PHP-FPM Access log config file has no access logging directive" + exit 1 + fi + + unset -v vdl_fpm_error_log_conf + unset -v vdl_fpm_access_log_conf +} + + + +############################################################ +# Functions +############################################################ + +### +### Change UID +### +set_docker_logs() { + dl_env_varname="${1}" + dl_log_dir="${2}" + dl_fpm_error_log_conf="${3}" + dl_fpm_access_log_conf="${4}" + + if ! env_set "${dl_env_varname}"; then + log "info" "\$${dl_env_varname} not set." + log "info" "Logging to docker logs stdout and stderr" + else + dl_docker_logs="$( env_get "${dl_env_varname}" )" + + # Disable docker logs and log to files + if [ "${dl_docker_logs}" = "0" ]; then + log "info" "\$${dl_env_varname} set to 0. Logging to files under: ${dl_log_dir}" + log "info" "Make sure to mount this directory in order to view logs" + + # Validation + _validate_docker_logs "${dl_fpm_error_log_conf}" "${dl_fpm_access_log_conf}" + + # Create Log directory + if [ ! -d "${dl_log_dir}" ]; then + run "mkdir -p ${dl_log_dir}" + fi + + # Fix permissions (in case uid/gid has changed) + if [ ! -f "${dl_log_dir}/php-fpm.access" ]; then + touch "${dl_log_dir}/php-fpm.access" + fi + if [ ! -f "${dl_log_dir}/php-fpm.error" ]; then + touch "${dl_log_dir}/php-fpm.error" + fi + run "chown -R ${MY_USER}:${MY_GROUP} ${dl_log_dir}" + + # Adjust PHP-FPM config to log to file + run "sed -i'' 's|^error_log.*$|error_log = ${dl_log_dir}/php-fpm.error|g' ${dl_fpm_error_log_conf}" + run "sed -i'' 's|^access\.log.*$|access.log = ${dl_log_dir}/php-fpm.access|g' ${dl_fpm_access_log_conf}" + + # Keep docker logs + elif [ "${dl_docker_logs}" = "1" ]; then + log "info" "\$${dl_env_varname} set to 1. Logging to docker logs stdout and stderr." + else + log "err" "Invalid value for \$${dl_env_varname}. Can only be 0 or 1. Provided: ${dl_docker_logs}" + exit 1 + fi + fi + + unset -v dl_env_varname + unset -v dl_log_dir + unset -v dl_fpm_error_log_conf + unset -v dl_fpm_access_log_conf + unset -v dl_docker_logs +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v sed >/dev/null 2>&1; then + echo "sed not found, but required." + exit 1 +fi diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/33-socat-port-forwarding.sh b/Dockerfiles/prod/data/docker-entrypoint.d/33-socat-port-forwarding.sh new file mode 100755 index 00000000..47209a20 --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/33-socat-port-forwarding.sh @@ -0,0 +1,204 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + + +############################################################ +# Helper Functions +############################################################ + +### +### Helper functions +### +_isip() { + # IP is not in correct format + if ! echo "${1}" | grep -Eq '^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$'; then + return 1 + fi + + # Get each octet + isip_o1="$( echo "${1}" | awk -F'.' '{print $1}' )" + isip_o2="$( echo "${1}" | awk -F'.' '{print $2}' )" + isip_o3="$( echo "${1}" | awk -F'.' '{print $3}' )" + isip_o4="$( echo "${1}" | awk -F'.' '{print $4}' )" + + # Cannot start with 0 and all must be below 256 + if [ "${isip_o1}" -lt "1" ] || \ + [ "${isip_o1}" -gt "255" ] || \ + [ "${isip_o2}" -gt "255" ] || \ + [ "${isip_o3}" -gt "255" ] || \ + [ "${isip_o4}" -gt "255" ]; then + unset -v isip_o1 + unset -v isip_o2 + unset -v isip_o3 + unset -v isip_o4 + # Error + return 1 + fi + + unset -v isip_o1 + unset -v isip_o2 + unset -v isip_o3 + unset -v isip_o4 + + # Success + return 0 +} + +_ishostname() { + # Does not have correct character class + if ! echo "${1}" | grep -Eq '^[-.0-9a-zA-Z]+$'; then + return 1 + fi + + # first and last character + ishostname_f_char="$( echo "${1}" | cut -c1-1 )" + ishostname_l_char="$( echo "${1}" | sed -e 's/.*\(.\)$/\1/' )" + + # Dot at beginning or end + if [ "${ishostname_f_char}" = "." ] || [ "${ishostname_l_char}" = "." ]; then + unset -v ishostname_f_char + unset -v ishostname_l_char + # Error + return 1 + fi + # Dash at beginning or end + if [ "${ishostname_f_char}" = "-" ] || [ "${ishostname_l_char}" = "-" ]; then + unset -v ishostname_f_char + unset -v ishostname_l_char + # Error + return 1 + fi + + unset -v ishostname_f_char + unset -v ishostname_l_char + + # Multiple dots next to each other + if echo "${1}" | grep -Eq '[.]{2,}'; then + # Error + return 1 + fi + # Dash next to dot + if echo "${1}" | grep -Eq '(\.-)|(-\.)'; then + # Error + return 1 + fi + + # Success + return 0 +} + + + +############################################################ +# Functions +############################################################ + +### +### +### +port_forward_get_lines() { + + if env_set "${1}"; then + + # Transform into newline separated forwards: + # local-port:host:remote-port\n + # local-port:host:remote-port\n + pfl_forwards="$( env_get "${1}" | sed 's/[[:space:]]*//g' | sed 's/,/\n/g' )" + + # loop over them line by line + IFS=' + ' + for pfl_line in ${pfl_forwards}; do + echo "${pfl_line}" + done + + unset -v pfl_forwards + unset -v pfl_line + fi +} + +port_forward_get_lport() { + # local-port:host:remote-port\n + echo "${1}" | awk -F':' '{print $1}' +} +port_forward_get_rhost() { + # local-port:host:remote-port\n + echo "${1}" | awk -F':' '{print $2}' +} +port_forward_get_rport() { + # local-port:host:remote-port\n + echo "${1}" | awk -F':' '{print $3}' +} + + + +port_forward_validate() { + pfv_env_varname="${1}" + + if ! env_set "${pfv_env_varname}"; then + log "info" "\$${pfv_env_varname} not set." + log "info" "Not ports from other machines will be forwarded to 127.0.0.1 inside this docker" + else + + # Loop over forwards in order to validate them + for pfv_line in $( port_forward_get_lines "${pfv_env_varname}" ); do + pfv_lport="$( port_forward_get_lport "${pfv_line}" )" + pfv_rhost="$( port_forward_get_rhost "${pfv_line}" )" + pfv_rport="$( port_forward_get_rport "${pfv_line}" )" + + if ! isint "${pfv_lport}"; then + log "err" "Port forwarding error: local port is not an integer: ${pfv_lport}" + log "err" "Line: ${pfv_line}" + exit 1 + fi + if ! _isip "${pfv_rhost}" && ! _ishostname "${pfv_rhost}"; then + log "err" "Port forwarding error: remote host is not a valid IP and not a valid hostname: ${pfv_rhost}" + log "err" "Line: ${pfv_line}" + log "err" "" + exit 1 + fi + if ! isint "${pfv_rport}"; then + log "err" "Port forwarding error: remote port is not an integer: ${pfv_rport}" + log "err" "Line: ${pfv_line}" + log "err" "" + exit 1 + fi + + log "info" "Forwarding ${pfv_rhost}:${pfv_rport} to 127.0.0.1:${pfv_lport} inside this docker." + done + + unset -v pfv_line + unset -v pfv_lport + unset -v pfv_rhost + unset -v pfv_rport + fi + + unset -v pfv_env_varname +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v awk >/dev/null 2>&1; then + echo "awk not found, but required." + exit 1 +fi +if ! command -v cut >/dev/null 2>&1; then + echo "cut not found, but required." + exit 1 +fi +if ! command -v sed >/dev/null 2>&1; then + echo "sed not found, but required." + exit 1 +fi diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/34-custom-ini-files.sh b/Dockerfiles/prod/data/docker-entrypoint.d/34-custom-ini-files.sh new file mode 100755 index 00000000..1470da9e --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/34-custom-ini-files.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + +############################################################ +# Functions +############################################################ + +### +### Copy *.ini files from source to destination with prefix +### +copy_ini_files() { + ini_src="${1}" + ini_dst="${2}" + + if [ ! -d "${ini_src}" ]; then + run "mkdir -p ${ini_src}" + fi + ini_files="$( find "${ini_src}" -type f -iname '*.ini' )" + + # loop over them line by line + IFS=' + ' + for ini_f in ${ini_files}; do + ini_name="$( basename "${ini_f}" )" + log "info" "PHP.ini: ${ini_name} -> ${ini_dst}/zzz-devilbox-${ini_name}" + run "cp ${ini_f} ${ini_dst}/devilbox-${ini_name}" + done + run "find ${ini_dst} -type f -iname '*.ini' -exec chmod 0644 \"{}\" \;" + + unset -v ini_src + unset -v ini_dst + unset -v ini_files + unset -v ini_f + unset -v ini_name +} + + +############################################################ +# Sanity Checks +############################################################ + +if ! command -v find >/dev/null 2>&1; then + echo "find not found, but required." + exit 1 +fi +if ! command -v basename >/dev/null 2>&1; then + echo "basename not found, but required." + exit 1 +fi diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/35-supervisor.sh b/Dockerfiles/prod/data/docker-entrypoint.d/35-supervisor.sh new file mode 100755 index 00000000..4ffa0489 --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/35-supervisor.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP +# + DEBUG_LEVEL + + +set -e +set -u + + + +############################################################ +# Functions +############################################################ + +### +### Add service to supervisord +### +supervisor_add_service() { + supervisor_name="${1}" + supervisor_command="${2}" + supervisor_confd="${3}" + supervisor_priority= + + if [ "${#}" -gt "3" ]; then + supervisor_priority="${4}" + fi + + if [ ! -d "${supervisor_confd}" ]; then + run "mkdir -p ${supervisor_confd}" + fi + + # Add services + { + echo "[program:${supervisor_name}]"; + echo "command = ${supervisor_command}"; + + if [ -n "${supervisor_priority}" ]; then + echo "priority = ${supervisor_priority}"; + fi + + echo "autostart = true"; + echo "autorestart = true"; + + echo "stdout_logfile = /dev/stdout"; + echo "stdout_logfile_maxbytes = 0"; + echo "stdout_events_enabled = true"; + + echo "stderr_logfile = /dev/stderr"; + echo "stderr_logfile_maxbytes = 0"; + echo "stderr_events_enabled = true"; + } > "${supervisor_confd}/${supervisor_name}.conf" + + unset -v supervisor_name + unset -v supervisor_command + unset -v supervisor_confd + unset -v supervisor_priority +} diff --git a/Dockerfiles/prod/data/docker-entrypoint.sh b/Dockerfiles/prod/data/docker-entrypoint.sh new file mode 100755 index 00000000..c92028a2 --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.sh @@ -0,0 +1,132 @@ +#!/bin/sh +# +# Available global variables: +# + MY_USER +# + MY_GROUP + +set -e +set -u + + +### +### Variables +### +PHP_INI_PATH="/usr/local/etc/php.ini" +FPM_ERROR_LOG_CFG="/usr/local/etc/php-fpm.conf" +FPM_ACCESS_LOG_CFG="/usr/local/etc/php-fpm.d/zzz-docker.conf" +FPM_LOG_DIR="/var/log/php" + +#PHP_CUST_MODULE_DIR="/etc/php-modules.d" + +PHP_CUST_INI_DIR="/etc/php-custom.d" +PHP_REAL_INI_DIR="/usr/local/etc/php.d" + +SUPERVISOR_CONFD="/etc/supervisor/conf.d" + + +### +### Source libs +### +init="$( find /docker-entrypoint.d -name '*.sh' -type f | sort -u )" +for f in ${init}; do + # shellcheck disable=SC1090 + . "${f}" +done + + +### +### Set Debug level +### +DEBUG_LEVEL="$( get_debug_level "DEBUG_ENTRYPOINT" "0" )" +log "info" "Debug level: ${DEBUG_LEVEL}" "${DEBUG_LEVEL}" + + + +############################################################# +## Sanity checks +############################################################# + +if ! command -v socat >/dev/null 2>&1; then + log "err" "socat not found, but required." "${DEBUG_LEVEL}" + exit 1 +fi + + + +############################################################# +## Entry Point +############################################################# + +### +### Change uid/gid +### +set_uid "NEW_UID" +set_gid "NEW_GID" + + +### +### Set timezone +### +set_timezone "TIMEZONE" "${PHP_INI_PATH}" + + +### +### Set Logging +### +set_docker_logs \ + "DOCKER_LOGS" \ + "${FPM_LOG_DIR}" \ + "${FPM_ERROR_LOG_CFG}" \ + "${FPM_ACCESS_LOG_CFG}" + + +### +### Setup postfix +### +set_postfix "ENABLE_MAIL" + + +### +### Validate socat port forwards +### +if ! port_forward_validate "FORWARD_PORTS_TO_LOCALHOST"; then + exit 1 +fi + + +### +### Supervisor: socat +### +for line in $( port_forward_get_lines "FORWARD_PORTS_TO_LOCALHOST" ); do + lport="$( port_forward_get_lport "${line}" )" + rhost="$( port_forward_get_rhost "${line}" )" + rport="$( port_forward_get_rport "${line}" )" + supervisor_add_service "socat-${lport}-${rhost}-${rport}" "/usr/bin/socat tcp-listen:${lport},reuseaddr,fork tcp:${rhost}:${rport}" "${SUPERVISOR_CONFD}" +done + + +### +### Supervisor: rsyslogd & postfix +### +if [ "$( env_get "ENABLE_MAIL" )" = "1" ]; then + supervisor_add_service "rsyslogd" "/usr/sbin/rsyslogd -n" "${SUPERVISOR_CONFD}" "1" + supervisor_add_service "postfix" "/usr/local/sbin/postfix.sh" "${SUPERVISOR_CONFD}" +fi + + +### +### Supervisor: php-fpm +### +supervisor_add_service "php-fpm" "/usr/local/sbin/php-fpm" "${SUPERVISOR_CONFD}" + + +### +### Copy custom *.ini files +### +copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_REAL_INI_DIR}" + + +### +### Start +### +exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf diff --git a/Dockerfiles/prod/data/postfix.sh b/Dockerfiles/prod/data/postfix.sh new file mode 100755 index 00000000..8f9f5797 --- /dev/null +++ b/Dockerfiles/prod/data/postfix.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +# +# Wrapper to have postfix run in foreground +# mode in order to be called by supvervisord +# +# +# CREDITS: +# This script is mostly based on the following Gist: +# https://gist.github.com/chrisnew/b0c1b8d310fc5ceaeac4 +# + + + +### +### Be strict +### +set -e +set -u +set -o pipefail + + +### +### Variables +### +if [ -f "/etc/alpine-release" ]; then + MAILLOG="/var/log/maillog" +elif [ -f "/etc/debian_version" ]; then + MAILLOG="/var/log/mail.log" +else + MAILLOG="/var/log/maillog" +fi + +MAILPID="/var/spool/postfix/pid/master.pid" + + +### +### Sanity checks +### +if ! command -v pidof >/dev/null 2>&1; then + echo "pidof is required for cleaning up tail command." + exit 1 +fi + +# Give rsyslogd some time to start up +sleep 2 + +if ! pidof rsyslogd >/dev/null 2>&1; then + echo "rsyslogd is not running, but required for mail logging." + exit 1 +fi + +# force new copy of hosts there (otherwise links could be outdated) +# TODO: check if required +#cp /etc/hosts /var/spool/postfix/etc/hosts + + +### +### Trap signals +### +trap "postfix stop" SIGINT +trap "postfix stop" SIGTERM +trap "postfix reload" SIGHUP + + +### +### Startup +### + +# start postfix +postfix start + +# Capture output +tail -qF -n 0 "${MAILLOG}" & +tail_pid="${?}" + + +### +### Warm-up time +### +sleep 3 + + +### +### Wait for kill signales +### +while kill -0 "$(cat "${MAILPID}")" >/dev/null 2>&1; do + # Check every second + sleep 1 +done + + +### +### Clean-up +### +kill "${tail_pid}" diff --git a/Dockerfiles/prod/data/supervisord.conf b/Dockerfiles/prod/data/supervisord.conf new file mode 100644 index 00000000..6b95366a --- /dev/null +++ b/Dockerfiles/prod/data/supervisord.conf @@ -0,0 +1,9 @@ +[supervisord] +user = root +nodaemon = true +logfile = /var/log/supervisor/supervisord.log +pidfile = /var/run/supervisord.pid +childlogdir = /var/log/supervisor + +[include] +files = /etc/supervisor/conf.d/*.conf diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..83d80be7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +**Copyright (c) 2018 [cytopia](https://github.com/cytopia)** + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/build/ansible/DOCKERFILES/Dockerfile-base.j2 b/build/ansible/DOCKERFILES/Dockerfile-base.j2 new file mode 100644 index 00000000..969bd0a8 --- /dev/null +++ b/build/ansible/DOCKERFILES/Dockerfile-base.j2 @@ -0,0 +1,73 @@ +# Auto-generated via Ansible +FROM php:{{ php_version }}-fpm +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM {{ php_version }} Image" \ + image="devilbox/php-fpm" \ + tag="{{ php_version }}-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" + + +### +### 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 +### +RUN set -x \ + && apt-get update \ + && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + + +### +### Copy files +### +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/devilbox.conf /usr/local/etc/php-fpm.d/zzz-devilbox.conf + + +{% if debug %} +### +### Verify +### +RUN set -x \ + && 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 + + +{% endif %} +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/build/ansible/DOCKERFILES/Dockerfile-mods.j2 b/build/ansible/DOCKERFILES/Dockerfile-mods.j2 new file mode 100644 index 00000000..dc2304e6 --- /dev/null +++ b/build/ansible/DOCKERFILES/Dockerfile-mods.j2 @@ -0,0 +1,349 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:{{ php_version }}-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM {{ php_version }} Image" \ + image="devilbox/php-fpm" \ + tag="{{ php_version }}-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ +{# ---- PHP Built-in Extensions ---- #} +{% for ext in php_builtin_extensions.keys() %} +{# Enabled #} +{% if php_version in php_builtin_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_builtin_extensions[ext]) or (php_version not in php_builtin_extensions[ext]['disabled']) %} +{# Version specific build_deps available #} +{% if php_version in php_builtin_extensions[ext] and 'build_dep' in php_builtin_extensions[ext][php_version] %} +{% for dep in php_builtin_extensions[ext][php_version]['build_dep'] %} + {{ dep }} \ +{% endfor %} +{# General build_deps available? #} +{% elif 'all' in php_builtin_extensions[ext] and 'build_dep' in php_builtin_extensions[ext]['all'] %} +{% for dep in php_builtin_extensions[ext]['all']['build_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP PECL Extensions ---- #} +{% for ext in php_pecl_extensions.keys() %} +{# Enabled #} +{% if php_version in php_pecl_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_pecl_extensions[ext]) or (php_version not in php_pecl_extensions[ext]['disabled']) %} +{# Version specific build_deps available #} +{% if php_version in php_pecl_extensions[ext] and 'build_dep' in php_pecl_extensions[ext][php_version] %} +{% for dep in php_pecl_extensions[ext][php_version]['build_dep'] %} + {{ dep }} \ +{% endfor %} +{# General build_deps available? #} +{% elif 'all' in php_pecl_extensions[ext] and 'build_dep' in php_pecl_extensions[ext]['all'] %} +{% for dep in php_pecl_extensions[ext]['all']['build_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP GIT Extensions git requirement ---- #} +{% if php_git_extensions %} + git \ +{% endif %} +{# ---- PHP GIT Extensions ---- #} +{% for ext in php_git_extensions.keys() %} +{# Enabled #} +{% if php_version in php_git_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_git_extensions[ext]) or (php_version not in php_git_extensions[ext]['disabled']) %} +{# Version specific build_deps available #} +{% if php_version in php_git_extensions[ext] and 'build_dep' in php_git_extensions[ext][php_version] %} +{% for dep in php_git_extensions[ext][php_version]['build_dep'] %} + {{ dep }} \ +{% endfor %} +{# General build_deps available? #} +{% elif 'all' in php_git_extensions[ext] and 'build_dep' in php_git_extensions[ext]['all'] %} +{% for dep in php_git_extensions[ext]['all']['build_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} + ca-certificates + +ENV RUN_DEPS \ +{# ---- PHP Built-in Extensions ---- #} +{% for ext in php_builtin_extensions.keys() %} +{# Enabled #} +{% if php_version in php_builtin_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_builtin_extensions[ext]) or (php_version not in php_builtin_extensions[ext]['disabled']) %} +{# Version specific run_deps available #} +{% if php_version in php_builtin_extensions[ext] and 'run_dep' in php_builtin_extensions[ext][php_version] %} +{% for dep in php_builtin_extensions[ext][php_version]['run_dep'] %} + {{ dep }} \ +{% endfor %} +{# General config available? #} +{% elif 'all' in php_builtin_extensions[ext] and 'run_dep' in php_builtin_extensions[ext]['all'] %} +{% for dep in php_builtin_extensions[ext]['all']['run_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP PECL Extensions ---- #} +{% for ext in php_pecl_extensions.keys() %} +{# Enabled #} +{% if php_version in php_pecl_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_pecl_extensions[ext]) or (php_version not in php_pecl_extensions[ext]['disabled']) %} +{# Version specific run_deps available #} +{% if php_version in php_pecl_extensions[ext] and 'run_dep' in php_pecl_extensions[ext][php_version] %} +{% for dep in php_pecl_extensions[ext][php_version]['run_dep'] %} + {{ dep }} \ +{% endfor %} +{# General run_deps available? #} +{% elif 'all' in php_pecl_extensions[ext] and 'run_dep' in php_pecl_extensions[ext]['all'] %} +{% for dep in php_pecl_extensions[ext]['all']['run_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP GIT Extensions ---- #} +{% for ext in php_git_extensions.keys() %} +{# Enabled #} +{% if php_version in php_git_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_git_extensions[ext]) or (php_version not in php_git_extensions[ext]['disabled']) %} +{# Version specific run_deps available #} +{% if php_version in php_git_extensions[ext] and 'run_dep' in php_git_extensions[ext][php_version] %} +{% for dep in php_git_extensions[ext][php_version]['run_dep'] %} + {{ dep }} \ +{% endfor %} +{# General run_deps available? #} +{% elif 'all' in php_git_extensions[ext] and 'run_dep' in php_git_extensions[ext]['all'] %} +{% for dep in php_git_extensions[ext]['all']['run_dep'] %} + {{ dep }} \ +{% endfor %} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} + ca-certificates + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + ${BUILD_DEPS} \ + \ + \ +{# ---- PHP Built-in Extensions ---- #} +{% for ext in php_builtin_extensions.keys() %} +{# Enabled #} +{% if php_version in php_builtin_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_builtin_extensions[ext]) or (php_version not in php_builtin_extensions[ext]['disabled']) %} +{# Version specific command available #} +{% if php_version in php_builtin_extensions[ext] and 'command' in php_builtin_extensions[ext][php_version] %} + && {{ php_builtin_extensions[ext][php_version]['command'] }} \ +{# General command available? #} +{% elif 'all' in php_builtin_extensions[ext] and 'command' in php_builtin_extensions[ext]['all'] %} + && {{ php_builtin_extensions[ext]['all']['command'] }} \ +{% endif %} +{# Version specific configure available #} +{% if php_version in php_builtin_extensions[ext] and 'configure' in php_builtin_extensions[ext][php_version] %} + && /usr/local/bin/docker-php-ext-configure {{ ext }} {{ php_builtin_extensions[ext][php_version]['configure'] }} \ +{# General configure available? #} +{% elif 'all' in php_builtin_extensions[ext] and 'configure' in php_builtin_extensions[ext]['all'] %} + && /usr/local/bin/docker-php-ext-configure {{ ext }} {{ php_builtin_extensions[ext]['all']['configure'] }} \ +{% endif %} + && /usr/local/bin/docker-php-ext-install{% if php_version != 5.4 %} -j$(getconf _NPROCESSORS_ONLN){% endif %} {{ ext }} \ +{% endif %} +{% endif %} +{% endfor %} + \ + \ +{# ---- PHP PECL Extensions ---- #} +{% for ext in php_pecl_extensions.keys() %} +{# Enabled #} +{% if php_version in php_pecl_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_pecl_extensions[ext]) or (php_version not in php_pecl_extensions[ext]['disabled']) %} +{# Version specific command available #} +{% if php_version in php_pecl_extensions[ext] and 'command' in php_pecl_extensions[ext][php_version] %} + && {{ php_pecl_extensions[ext][php_version]['command'] }} \ +{# General command available? #} +{% elif 'all' in php_pecl_extensions[ext] and 'command' in php_pecl_extensions[ext]['all'] %} + && {{ php_pecl_extensions[ext]['all']['command'] }} \ +{# Version specific name available #} +{% elif php_version in php_pecl_extensions[ext] and 'alt_name' in php_pecl_extensions[ext][php_version] %} + && pecl install {{ php_pecl_extensions[ext][php_version]['alt_name'] }} \ +{# General name available? #} +{% elif 'all' in php_pecl_extensions[ext] and 'alt_name' in php_pecl_extensions[ext]['all'] %} + && pecl install {{ php_pecl_extensions[ext]['all']['alt_name'] }} \ +{% else %} + && pecl install {{ ext }} \ +{% endif %} +{# Version specific module available #} +{% if php_version in php_pecl_extensions[ext] and 'alt_module' in php_pecl_extensions[ext][php_version] %} + && docker-php-ext-enable {{ php_pecl_extensions[ext][php_version]['alt_module'] }} \ +{# General module available? #} +{% elif 'all' in php_pecl_extensions[ext] and 'alt_module' in php_pecl_extensions[ext]['all'] %} + && docker-php-ext-enable {{ php_pecl_extensions[ext]['all']['alt_module'] }} \ +{% else %} + && docker-php-ext-enable {{ ext }} \ +{% endif %} +{% endif %} +{% endif %} +{% endfor %} + \ + \ +{# ---- PHP GIT Extensions ---- #} +{% for ext in php_git_extensions.keys() %} +{# Enabled #} +{% if php_version in php_git_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_git_extensions[ext]) or (php_version not in php_git_extensions[ext]['disabled']) %} +{# Version specific url available #} +{% if php_version in php_git_extensions[ext] and 'git_url' in php_git_extensions[ext][php_version] %} + && git clone -v {{ php_git_extensions[ext][php_version]['git_url'] }} /tmp/{{ ext }} \ +{# General url available? #} +{% else %} + && git clone -v {{ php_git_extensions[ext]['all']['git_url'] }} /tmp/{{ ext }} \ +{% endif %} +{# Version specific ref available #} +{% if php_version in php_git_extensions[ext] and 'git_ref' in php_git_extensions[ext][php_version] %} + && cd /tmp/{{ ext }} \ + && git checkout {{ php_git_extensions[ext][php_version]['git_ref'] }} \ +{# General ref available? #} +{% elif 'all' in php_git_extensions[ext] and 'git_ref' in php_git_extensions[ext]['all'] %} + && cd /tmp/{{ ext }} \ + && git checkout {{ php_git_extensions[ext]['all']['git_ref'] }} \ +{% endif %} +{# Version specific command available #} +{% if php_version in php_git_extensions[ext] and 'command' in php_git_extensions[ext][php_version] %} + && cd /tmp/{{ ext }} && {{ php_git_extensions[ext][php_version]['command'] }} \ +{# General command available? #} +{% else %} + && cd /tmp/{{ ext }} && {{ php_git_extensions[ext]['all']['command'] }} \ +{% endif %} +{# Version specific module available #} +{% if php_version in php_git_extensions[ext] and 'alt_module' in php_git_extensions[ext][php_version] %} + && docker-php-ext-enable {{ php_git_extensions[ext][php_version]['alt_module'] }} \ +{# General module available? #} +{% elif 'all' in php_git_extensions[ext] and 'alt_module' in php_git_extensions[ext]['all'] %} + && docker-php-ext-enable {{ php_git_extensions[ext]['all']['alt_module'] }} \ +{% else %} + && docker-php-ext-enable {{ ext }} \ +{% endif %} +{# Cleanup #} + && cd / && rm -rf /tmp/{{ ext }} \ +{% endif %} +{% endif %} +{% endfor %} + \ + \ + && 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} \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates \ + && find /usr/local -type f -perm /u+x -exec strip --strip-all '{}' + || true + + +{% if debug %} +### +### Verify +### +RUN set -x \ + && 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 \ +{# ---- PHP Built-in Extensions ---- #} +{% for ext in php_builtin_extensions.keys() %} +{# Enabled #} +{% if php_version in php_builtin_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_builtin_extensions[ext]) or (php_version not in php_builtin_extensions[ext]['disabled']) %} +{% if ext == 'opcache' %} + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ +{% else %} + && php -m | grep -oiE '^{{ ext }}$' \ + && php-fpm -m | grep -oiE '^{{ ext }}$' \ +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP PECL Extensions ---- #} +{% for ext in php_pecl_extensions.keys() %} +{# Enabled #} +{% if php_version in php_pecl_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_pecl_extensions[ext]) or (php_version not in php_pecl_extensions[ext]['disabled']) %} +{% if ext == 'opcache' %} + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ +{% else %} + && php -m | grep -oiE '^{{ ext }}$' \ + && php-fpm -m | grep -oiE '^{{ ext }}$' \ +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{# ---- PHP GIT Extensions ---- #} +{% for ext in php_git_extensions.keys() %} +{# Enabled #} +{% if php_version in php_git_extensions[ext]['enabled'] %} +{# Not Disabled #} +{% if ('disabled' not in php_git_extensions[ext]) or (php_version not in php_git_extensions[ext]['disabled']) %} +{% if ext == 'opcache' %} + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ +{% else %} + && php -m | grep -oiE '^{{ ext }}$' \ + && php-fpm -m | grep -oiE '^{{ ext }}$' \ +{% endif %} +{% endif %} +{% endif %} +{% endfor %} + && true + + +{% endif %} +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/build/ansible/DOCKERFILES/Dockerfile-prod.j2 b/build/ansible/DOCKERFILES/Dockerfile-prod.j2 new file mode 100644 index 00000000..df751968 --- /dev/null +++ b/build/ansible/DOCKERFILES/Dockerfile-prod.j2 @@ -0,0 +1,91 @@ +# Auto-generated via Ansible +FROM devilbox/php-fpm:{{ php_version }}-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM {{ php_version }} Image" \ + image="devilbox/php-fpm" \ + tag="{{ php_version }}-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ + locales-all \ + postfix \ + postfix-pcre \ + rsyslog \ + socat \ + supervisor \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor + + + +### +### Configure +### +RUN set -x \ + && { \ + echo "[mail function]"; \ + echo "sendmail_path = /usr/sbin/sendmail -t -i"; \ + echo ";mail.force_extra_parameters ="; \ + echo "mail.add_x_header = On"; \ + echo "mail.log = /var/log/php/mail.log"; \ + } > /usr/local/etc/php/conf.d/devilbox-mail.ini + + +{% if debug %} +### +### Verify +### +RUN set -x \ + && 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 + + +{% endif %} +### +### 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-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/build/ansible/README.md b/build/ansible/README.md new file mode 100644 index 00000000..c2a770ce --- /dev/null +++ b/build/ansible/README.md @@ -0,0 +1,6 @@ +Ansible is used to generate Dockerfiles + + +```bash +ansible-playbook generate.yml +``` diff --git a/build/ansible/ansible.cfg b/build/ansible/ansible.cfg new file mode 100644 index 00000000..5831c616 --- /dev/null +++ b/build/ansible/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +roles_path = ./roles +inventory = inventory diff --git a/build/ansible/generate.yml b/build/ansible/generate.yml new file mode 100644 index 00000000..98f769bd --- /dev/null +++ b/build/ansible/generate.yml @@ -0,0 +1,8 @@ +--- + +- hosts: all + gather_facts: False + roles: + - template + tags: + - template diff --git a/build/ansible/group_vars/all.yml b/build/ansible/group_vars/all.yml new file mode 100644 index 00000000..e3a471e6 --- /dev/null +++ b/build/ansible/group_vars/all.yml @@ -0,0 +1,479 @@ +--- + +template_files: + - src: DOCKERFILES/Dockerfile-base.j2 + dst: "../../Dockerfiles/base/Dockerfile-{{ php_version }}" + - src: DOCKERFILES/Dockerfile-mods.j2 + dst: "../../Dockerfiles/mods/Dockerfile-{{ php_version }}" + - src: DOCKERFILES/Dockerfile-prod.j2 + dst: "../../Dockerfiles/prod/Dockerfile-{{ php_version }}" + + + +# Adds self-validating checks to Dockerfile +# turn off for final build +debug: True + + +php_all_versions: + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - 7.1 + - 7.2 + + +php_conf_dir: /usr/local/etc/php.d + + +### +### Available GIT extensions +### +### : +### enabled: [] +### disabled: [] +### all: +### git_url: Url for git clone +### git_ref: git branch tag, commit or shell command to retrieve a tag or commit +### command: command to install +### alt_module: alternative module name to enable (precedence over .so) +### build_dep: +### run_dep: +### +php_git_extensions: + phalcon: + enabled: "{{ php_all_versions }}" + 5.4: + git_ref: phalcon-v2.0.13 + all: + git_url: https://github.com/phalcon/cphalcon + git_ref: $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | tail -1 | sed 's/^.*tags\///g') + command: cd build && ./install + uploadprogress: + enabled: "{{ php_all_versions }}" + disabled: [5.4, 5.5, 5.6] + all: + git_url: https://github.com/php/pecl-php-uploadprogress + git_ref: master + command: phpize && ./configure --enable-uploadprogress && make -j$(getconf _NPROCESSORS_ONLN) && make install + +### +### Available PECL extensions +### +### : +### enabled: [] +### disabled: [] +### all: +### command: alternative command to install (precedence over and +### alt_name: alternative name of to install (precedence over +### alt_module: alternative module name to enable (precedence over .so) +### build_dep: +### run_dep: +### +php_pecl_extensions: + #apc: + # enabled: "{{ php_all_versions }}" + # disabled: [5.5, 5.6, 7.0, 7.1, 7.2] + #apcu_bc: + # enabled: "{{ php_all_versions }}" + # disabled: [5.4, 5.5, 5.6] + # all: + # alt_module: apc + apcu: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: apcu-4.0.11 + 5.5: + alt_name: apcu-4.0.11 + 5.6: + alt_name: apcu-4.0.11 + amqp: + enabled: "{{ php_all_versions }}" + 7.2: + run_dep: [librabbitmq4] + all: + command: echo "/usr" | pecl install amqp + build_dep: [librabbitmq-dev] + run_dep: [librabbitmq1] + igbinary: + enabled: "{{ php_all_versions }}" + imagick: + enabled: "{{ php_all_versions }}" + 7.2: + run_dep: [libmagickwand-6.q16-3] + all: + build_dep: [libmagickwand-dev] + run_dep: [libmagickwand-6.q16-2] + mcrypt: + enabled: "{{ php_all_versions }}" + disabled: [5.4, 5.5, 5.6, 7.0, 7.1] # Already avail by default + 7.2: + alt_name: mcrypt-1.0.1 + build_dep: [libmcrypt-dev] + run_dep: [libmcrypt4] + memcache: + enabled: "{{ php_all_versions }}" + disabled: [7.0, 7.1, 7.2] + all: + build_dep: [zlib1g-dev] + memcached: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: memcached-2.2.0 + 5.5: + alt_name: memcached-2.2.0 + 5.6: + alt_name: memcached-2.2.0 + all: + build_dep: [zlib1g-dev, libmemcached-dev] + run_dep: [libmemcachedutil2] + mongodb: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: mongodb-1.2.11 + build_dep: [libssl-dev] + msgpack: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: msgpack-0.5.7 + 5.5: + alt_name: msgpack-0.5.7 + 5.6: + alt_name: msgpack-0.5.7 + redis: + enabled: "{{ php_all_versions }}" + swoole: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: swoole-1.9.23 + 5.5: + alt_name: swoole-1.9.23 + 5.6: + alt_name: swoole-1.9.23 + 7.2: + run_dep: [libnghttp2-14] + all: + build_dep: [libnghttp2-dev, libssl-dev, libnghttp2-5] + run_dep: [libnghttp2-5] + uploadprogress: + enabled: "{{ php_all_versions }}" + disabled: [7.2, 7.1, 7.0] + xdebug: + enabled: "{{ php_all_versions }}" + 5.4: + alt_name: xdebug-2.4.1 + 5.5: + alt_name: xdebug-2.5.5 + 5.6: + alt_name: xdebug-2.5.5 + + +### +### PHP Built-in Modules to enable +### +### will use e.g. 5.6 for PHP 5.6 as specific configuration +### or if not available, use all +### +### module-name: +### enabled: [ what php versions it is enabled for] +### disabled: [ what php versions it is disabled for] (precedence over enabled) +### '5.6': +### command: command to execute prior installation +### configure: custom configure command +### build_dep: +### run_dep: +### all: +### command: +### configure: +### build_dep: +### run_dep: +### +php_builtin_extensions: + bcmath: + enabled: "{{ php_all_versions }}" + bz2: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libbz2-dev] + calendar: + enabled: "{{ php_all_versions }}" + ctype: + enabled: "{{ php_all_versions }}" + curl: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libcurl4-openssl-dev] + dba: + enabled: "{{ php_all_versions }}" + dom: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + enchant: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libenchant-dev] + run_dep: [libenchant1c2a] + exif: + enabled: "{{ php_all_versions }}" + fileinfo: + enabled: "{{ php_all_versions }}" + filter: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # Available by default + ftp: + enabled: "{{ php_all_versions }}" + all: + configure: --with-openssl-dir + build_dep: [libssl-dev] + gd: + enabled: "{{ php_all_versions }}" + 7.2: + configure: --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 + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev, libwebp-dev] + run_dep: [libpng16-16, libjpeg62-turbo, libxpm4, libvpx4, libfreetype6, libwebp6] + 7.1: + configure: --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 + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev, libwebp-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp-dev] + 7.0: + configure: --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 + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev, libwebp-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp-dev] + all: + command: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ + configure: --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 + build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] + run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6] + gettext: + enabled: "{{ php_all_versions }}" + gmp: + enabled: "{{ php_all_versions }}" + all: + command: ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ + build_dep: [libgmp-dev] + hash: + enabled: "{{ php_all_versions }}" + iconv: + enabled: "{{ php_all_versions }}" + imap: + enabled: "{{ php_all_versions }}" + all: + command: ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ + configure: --with-kerberos --with-imap-ssl --with-imap + build_dep: [libc-client-dev, libkrb5-dev, libcurl4-openssl-dev] + run_dep: [libc-client2007e] + interbase: + enabled: "{{ php_all_versions }}" + disabled: [5.4] + all: + build_dep: [libfbclient2, libib-util, firebird-dev] + run_dep: [libfbclient2] + intl: + enabled: "{{ php_all_versions }}" + 7.2: + run_dep: [libicu57] + all: + build_dep: [libicu-dev] + run_dep: [libicu52] + json: + enabled: "{{ php_all_versions }}" + ldap: + enabled: "{{ php_all_versions }}" + all: + command: ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ + configure: --with-ldap --with-ldap-sasl + build_dep: [libldap2-dev, libsasl2-dev] + libxml: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # Available by default + mbstring: + enabled: "{{ php_all_versions }}" + mcrypt: + enabled: "{{ php_all_versions }}" + disabled: [7.2] + 7.2: + build_dep: [] + run_dep: [] + all: + run_dep: [libmcrypt4] + build_dep: [libmcrypt-dev] + mysql: + enabled: "{{ php_all_versions }}" + disabled: [7.0, 7.1, 7.2] + mysqli: + enabled: "{{ php_all_versions }}" + disabled: [7.0, 7.1, 7.2] + mysqlnd: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # Available by default + oci8: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # TODO: Oracle library is missing + odbc: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # TODO: sqlext.h' not found! + opcache: + enabled: "{{ php_all_versions }}" + disabled: [5.4] + openssl: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # Available by default + pcntl: + enabled: "{{ php_all_versions }}" + pcre: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # Available by default + pdo: + enabled: "{{ php_all_versions }}" + pdo_dblib: + enabled: "{{ php_all_versions }}" + all: + command: ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ + build_dep: [freetds-dev] + run_dep: [libsybdb5] + pdo_firebird: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libfbclient2, libib-util, firebird-dev] + run_dep: [libfbclient2] + pdo_mysql: + enabled: "{{ php_all_versions }}" + pdo_oci: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # TODO: Oracle library is missing + pdo_odbc: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # TODO: Build errors + pdo_pgsql: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libpq-dev] + run_dep: [libpq5] + pdo_sqlite: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libsqlite3-dev] + pgsql: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libpq-dev] + run_dep: [libpq5] + phar: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libssl-dev] + posix: + enabled: "{{ php_all_versions }}" + pspell: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libpspell-dev] + run_dep: [libaspell15] + readline: + enabled: "{{ php_all_versions }}" + disabled: [5.4] + all: + build_dep: [libedit-dev, libreadline-dev] + recode: + enabled: "{{ php_all_versions }}" + all: + build_dep: [librecode-dev] + run_dep: [librecode0] + session: + enabled: "{{ php_all_versions }}" + all: + configure: --with-mm + build_dep: [libmm-dev] + shmop: + enabled: "{{ php_all_versions }}" + simplexml: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + snmp: + enabled: "{{ php_all_versions }}" + all: + configure: --with-openssl-dir + build_dep: [libssl-dev, libsnmp-dev, snmp] + run_dep: [snmp] + soap: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + sockets: + enabled: "{{ php_all_versions }}" + sodium: + enabled: "{{ php_all_versions }}" + disabled: [5.4, 5.5, 5.6, 7.0, 7.1] + all: + build_dep: [libsodium-dev] + spl: + enabled: "{{ php_all_versions }}" + disabled: "{{ php_all_versions }}" # TODO: Did not work + sysvmsg: + enabled: "{{ php_all_versions }}" + sysvsem: + enabled: "{{ php_all_versions }}" + sysvshm: + enabled: "{{ php_all_versions }}" + tidy: + enabled: "{{ php_all_versions }}" + 7.2: + run_dep: [libtidy5] + all: + build_dep: [libtidy-dev] + run_dep: [libtidy-0.99-0] + tokenizer: + enabled: "{{ php_all_versions }}" + wddx: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + xml: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + xmlreader: + enabled: "{{ php_all_versions }}" + disabled: [7.0, 7.1, 7.2] # build errors + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + xmlrpc: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr --with-iconv-dir=/usr + build_dep: [libxml2-dev] + xmlwriter: + enabled: "{{ php_all_versions }}" + all: + configure: --with-libxml-dir=/usr + build_dep: [libxml2-dev] + xsl: + enabled: "{{ php_all_versions }}" + all: + build_dep: [libxslt-dev] + run_dep: [libxslt1.1] + zip: + enabled: "{{ php_all_versions }}" + 5.4: + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + 5.5: + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr + build_dep: [zlib1g-dev] + run_dep: [] + 7.2: + run_dep: [libzip4] + all: + configure: --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip + build_dep: [zlib1g-dev, libzip-dev] + run_dep: [libzip2] diff --git a/build/ansible/inventory b/build/ansible/inventory new file mode 100644 index 00000000..96128d30 --- /dev/null +++ b/build/ansible/inventory @@ -0,0 +1,7 @@ +[php] +php-5.4 php_version=5.4 ansible_connection=local +php-5.5 php_version=5.5 ansible_connection=local +php-5.6 php_version=5.6 ansible_connection=local +php-7.0 php_version=7.0 ansible_connection=local +php-7.1 php_version=7.1 ansible_connection=local +php-7.2 php_version=7.2 ansible_connection=local diff --git a/build/ansible/roles/template/defaults/main.yml b/build/ansible/roles/template/defaults/main.yml new file mode 100644 index 00000000..f75a06d2 --- /dev/null +++ b/build/ansible/roles/template/defaults/main.yml @@ -0,0 +1,5 @@ +--- + +template_files: [] +# - src: +# dst: diff --git a/build/ansible/roles/template/tasks/main.yml b/build/ansible/roles/template/tasks/main.yml new file mode 100644 index 00000000..4d32a73a --- /dev/null +++ b/build/ansible/roles/template/tasks/main.yml @@ -0,0 +1,10 @@ +--- + +- name: render template + template: + src: "{{ item.src }}" + dest: "{{ item.dst }}" + force: True + mode: 0644 + with_items: + - "{{ template_files }}" diff --git a/build/gen-readme.sh b/build/gen-readme.sh new file mode 100755 index 00000000..7d4c789c --- /dev/null +++ b/build/gen-readme.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e +set -u +set -x + +CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" + + + +get_modules() { + tag="${1}" + + PHP_MODULES="$( docker run -it --entrypoint=php devilbox/php-fpm:${tag} -m )" + + PHP_MODULES="$( echo "${PHP_MODULES}" | sed 's/^\[.*//g' )" # Remove PHP Modules headlines + PHP_MODULES="$( echo "${PHP_MODULES}" | sort -fu )" # Unique + PHP_MODULES="$( echo "${PHP_MODULES}" | sed '/^\s*$/d' )" # Remove empty lines + PHP_MODULES="$( echo "${PHP_MODULES}" | tr '\r\n' ',' )" # Newlines to commas + PHP_MODULES="$( echo "${PHP_MODULES}" | sed 's/,,/,/g' )" # Remove PHP Modules headlines + PHP_MODULES="$( echo "${PHP_MODULES}" | sed 's/,$//g' )" # Remove trailing comma + PHP_MODULES="$( echo "${PHP_MODULES}" | sed 's/,/, /g' )" # Add space to comma + + echo "${PHP_MODULES}" +} + + +sed -i'' "s|.*<\/td>|$( get_modules "5.4-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "5.4-mods" )<\/td>|g" "${CWD}/../README.md" + +sed -i'' "s|.*<\/td>|$( get_modules "5.5-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "5.5-mods" )<\/td>|g" "${CWD}/../README.md" + +sed -i'' "s|.*<\/td>|$( get_modules "5.6-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "5.6-mods" )<\/td>|g" "${CWD}/../README.md" + +sed -i'' "s|.*<\/td>|$( get_modules "7.0-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "7.0-mods" )<\/td>|g" "${CWD}/../README.md" + +sed -i'' "s|.*<\/td>|$( get_modules "7.1-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "7.1-mods" )<\/td>|g" "${CWD}/../README.md" + +sed -i'' "s|.*<\/td>|$( get_modules "7.2-base" )<\/td>|g" "${CWD}/../README.md" +sed -i'' "s|.*<\/td>|$( get_modules "7.2-mods" )<\/td>|g" "${CWD}/../README.md" +