From 2e7ae22f58ee8625e78a20126ea3ac61f2c150fb Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 24 Feb 2018 14:08:51 +0100 Subject: [PATCH] Fix build for php:7-2-work --- Dockerfiles/work/Dockerfile-5.4 | 2 +- Dockerfiles/work/Dockerfile-5.5 | 2 +- Dockerfiles/work/Dockerfile-5.6 | 2 +- Dockerfiles/work/Dockerfile-7.0 | 2 +- Dockerfiles/work/Dockerfile-7.1 | 2 +- Dockerfiles/work/Dockerfile-7.2 | 2 +- build/README.md | 51 ++++++++++++++++++++ build/ansible/DOCKERFILES/Dockerfile-work.j2 | 2 +- build/gen-readme.sh | 24 +++++++++ 9 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 build/README.md diff --git a/Dockerfiles/work/Dockerfile-5.4 b/Dockerfiles/work/Dockerfile-5.4 index bda8bf9..b22dc6d 100644 --- a/Dockerfiles/work/Dockerfile-5.4 +++ b/Dockerfiles/work/Dockerfile-5.4 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/Dockerfiles/work/Dockerfile-5.5 b/Dockerfiles/work/Dockerfile-5.5 index 153661c..f9dc427 100644 --- a/Dockerfiles/work/Dockerfile-5.5 +++ b/Dockerfiles/work/Dockerfile-5.5 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/Dockerfiles/work/Dockerfile-5.6 b/Dockerfiles/work/Dockerfile-5.6 index 1db192d..ccebe55 100644 --- a/Dockerfiles/work/Dockerfile-5.6 +++ b/Dockerfiles/work/Dockerfile-5.6 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/Dockerfiles/work/Dockerfile-7.0 b/Dockerfiles/work/Dockerfile-7.0 index 06c7b64..168d42d 100644 --- a/Dockerfiles/work/Dockerfile-7.0 +++ b/Dockerfiles/work/Dockerfile-7.0 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/Dockerfiles/work/Dockerfile-7.1 b/Dockerfiles/work/Dockerfile-7.1 index b0a247b..c361f15 100644 --- a/Dockerfiles/work/Dockerfile-7.1 +++ b/Dockerfiles/work/Dockerfile-7.1 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/Dockerfiles/work/Dockerfile-7.2 b/Dockerfiles/work/Dockerfile-7.2 index c3a52cf..e66edae 100644 --- a/Dockerfiles/work/Dockerfile-7.2 +++ b/Dockerfiles/work/Dockerfile-7.2 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/build/README.md b/build/README.md new file mode 100644 index 0000000..c5f7409 --- /dev/null +++ b/build/README.md @@ -0,0 +1,51 @@ +# Build helper + +This directory contains all tools for building. + +## `ansible/` + +The `ansible/` directory contains a setup to generate all Dockerfiles. Once generated, they will be placed or updated into [../Dockerfiles](../Dockerfiles). + +**How to generate via ansible command** +```bash +# From inside ansible directory +cd ansible +ansible-playbook generate.yml --diff +``` + +**How to generate via Makefile** +```bash +# From inside root git directory +cd .. +make generate +``` + +**Requirements** + +In order to generate Dockerfiles, you will have to have ansible installed: +``` +pip install ansible +``` + +## `gen-readme.sh` + +`gen-readme.sh` will update the README.md with currently enabled PHP modules for each Docker image. + +**How to update the README.md** + +```bash +# Update for all Docker images +./gen-readme.sh + +# Update for specific Docker image +./gen-readme.sh 5.4 +./gen-readme.sh 5.5 +./gen-readme.sh 5.6 +./gen-readme.sh 7.0 +./gen-readme.sh 7.1 +./gen-readme.sh 7.2 +``` + +**Requirements** + +If you want to update the README.md for a specific Docker image, you must have built this image prior running `gen-readme.sh`. diff --git a/build/ansible/DOCKERFILES/Dockerfile-work.j2 b/build/ansible/DOCKERFILES/Dockerfile-work.j2 index 4852a61..67e8589 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-work.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-work.j2 @@ -56,7 +56,7 @@ RUN set -x \ nano \ net-tools \ netcat \ - postgresql-client \ +# postgresql-client \ python-pip \ rubygems \ ruby-dev \ diff --git a/build/gen-readme.sh b/build/gen-readme.sh index 4fe6c13..849eb91 100755 --- a/build/gen-readme.sh +++ b/build/gen-readme.sh @@ -1,11 +1,17 @@ #!/usr/bin/env bash +# Be very strict set -e set -u +set -o pipefail +# Get absolute directory of this script CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" +### +### Show Usage +### print_usage() { echo "Usage: gen-readme.sh" echo " gen-readme.sh 5.4" @@ -16,11 +22,17 @@ print_usage() { echo " gen-readme.sh 7.2" } + +### +### Extract PHP modules in alphabetical order and comma separated in one line +### get_modules() { tag="${1}" + # Retrieve all modules PHP_MODULES="$( docker run -it --entrypoint=php devilbox/php-fpm:${tag} -m )" + # Process module string into correct format for README.md 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 @@ -32,14 +44,23 @@ get_modules() { echo "${PHP_MODULES}" } + +### +### Replace modules in Readme for specified PHP version +### update_readme() { v="${1}" + # Those sections must exist in README.md, otherwise this script will exit with errors sed -i'' "s|.*<\/td>|$( get_modules "${v}-base" )<\/td>|g" "${CWD}/../README.md" sed -i'' "s|.*<\/td>|$( get_modules "${v}-mods" )<\/td>|g" "${CWD}/../README.md" } +### +### Entrypoint +### if [ "${#}" -eq "0" ]; then + # Update PHP modules for all versions at once update_readme "5.4" update_readme "5.5" update_readme "5.6" @@ -47,6 +68,7 @@ if [ "${#}" -eq "0" ]; then update_readme "7.1" update_readme "7.2" elif [ "${#}" -gt "1" ]; then + # Specifying more than 1 argument is wrong echo "Error, invalid number of arguments." print_usage exit 1 @@ -57,10 +79,12 @@ else && [ "${1}" != "7.0" ] \ && [ "${1}" != "7.1" ] \ && [ "${1}" != "7.2" ]; then + # Argument does not match any of the PHP versions echo "Error, invalid argument." print_usage exit 1 else + # Update PHP modules for one specific PHP version update_readme "${1}" fi fi