From d9f865e747e11f20c9714424bc5d1ca091ac7757 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Mon, 12 Feb 2018 17:31:49 -0600 Subject: [PATCH 1/5] Reorganize variants to group on PHP version then platform build --- {apache => php5.6/apache}/Dockerfile | 0 {apache-php7.0 => php5.6/apache}/docker-entrypoint.sh | 0 {apache-php7.0 => php5.6/apache}/makedb.php | 0 {fpm => php5.6/fpm}/Dockerfile | 0 {apache-php7.1 => php5.6/fpm}/docker-entrypoint.sh | 0 {apache-php7.1 => php5.6/fpm}/makedb.php | 0 {apache-php7.0 => php7.0/apache}/Dockerfile | 0 {apache-php7.2 => php7.0/apache}/docker-entrypoint.sh | 0 {apache-php7.2 => php7.0/apache}/makedb.php | 0 {fpm-php7.0 => php7.0/fpm}/Dockerfile | 0 {apache => php7.0/fpm}/docker-entrypoint.sh | 0 {apache => php7.0/fpm}/makedb.php | 0 {apache-php7.1 => php7.1/apache}/Dockerfile | 0 {fpm-php7.0 => php7.1/apache}/docker-entrypoint.sh | 0 {fpm-php7.0 => php7.1/apache}/makedb.php | 0 {fpm-php7.1 => php7.1/fpm}/Dockerfile | 0 {fpm-php7.1 => php7.1/fpm}/docker-entrypoint.sh | 0 {fpm-php7.1 => php7.1/fpm}/makedb.php | 0 {apache-php7.2 => php7.2/apache}/Dockerfile | 0 {fpm-php7.2 => php7.2/apache}/docker-entrypoint.sh | 0 {fpm-php7.2 => php7.2/apache}/makedb.php | 0 {fpm-php7.2 => php7.2/fpm}/Dockerfile | 0 {fpm => php7.2/fpm}/docker-entrypoint.sh | 0 {fpm => php7.2/fpm}/makedb.php | 0 24 files changed, 0 insertions(+), 0 deletions(-) rename {apache => php5.6/apache}/Dockerfile (100%) rename {apache-php7.0 => php5.6/apache}/docker-entrypoint.sh (100%) rename {apache-php7.0 => php5.6/apache}/makedb.php (100%) rename {fpm => php5.6/fpm}/Dockerfile (100%) rename {apache-php7.1 => php5.6/fpm}/docker-entrypoint.sh (100%) rename {apache-php7.1 => php5.6/fpm}/makedb.php (100%) rename {apache-php7.0 => php7.0/apache}/Dockerfile (100%) rename {apache-php7.2 => php7.0/apache}/docker-entrypoint.sh (100%) rename {apache-php7.2 => php7.0/apache}/makedb.php (100%) rename {fpm-php7.0 => php7.0/fpm}/Dockerfile (100%) rename {apache => php7.0/fpm}/docker-entrypoint.sh (100%) rename {apache => php7.0/fpm}/makedb.php (100%) rename {apache-php7.1 => php7.1/apache}/Dockerfile (100%) rename {fpm-php7.0 => php7.1/apache}/docker-entrypoint.sh (100%) rename {fpm-php7.0 => php7.1/apache}/makedb.php (100%) rename {fpm-php7.1 => php7.1/fpm}/Dockerfile (100%) rename {fpm-php7.1 => php7.1/fpm}/docker-entrypoint.sh (100%) rename {fpm-php7.1 => php7.1/fpm}/makedb.php (100%) rename {apache-php7.2 => php7.2/apache}/Dockerfile (100%) rename {fpm-php7.2 => php7.2/apache}/docker-entrypoint.sh (100%) rename {fpm-php7.2 => php7.2/apache}/makedb.php (100%) rename {fpm-php7.2 => php7.2/fpm}/Dockerfile (100%) rename {fpm => php7.2/fpm}/docker-entrypoint.sh (100%) rename {fpm => php7.2/fpm}/makedb.php (100%) diff --git a/apache/Dockerfile b/php5.6/apache/Dockerfile similarity index 100% rename from apache/Dockerfile rename to php5.6/apache/Dockerfile diff --git a/apache-php7.0/docker-entrypoint.sh b/php5.6/apache/docker-entrypoint.sh similarity index 100% rename from apache-php7.0/docker-entrypoint.sh rename to php5.6/apache/docker-entrypoint.sh diff --git a/apache-php7.0/makedb.php b/php5.6/apache/makedb.php similarity index 100% rename from apache-php7.0/makedb.php rename to php5.6/apache/makedb.php diff --git a/fpm/Dockerfile b/php5.6/fpm/Dockerfile similarity index 100% rename from fpm/Dockerfile rename to php5.6/fpm/Dockerfile diff --git a/apache-php7.1/docker-entrypoint.sh b/php5.6/fpm/docker-entrypoint.sh similarity index 100% rename from apache-php7.1/docker-entrypoint.sh rename to php5.6/fpm/docker-entrypoint.sh diff --git a/apache-php7.1/makedb.php b/php5.6/fpm/makedb.php similarity index 100% rename from apache-php7.1/makedb.php rename to php5.6/fpm/makedb.php diff --git a/apache-php7.0/Dockerfile b/php7.0/apache/Dockerfile similarity index 100% rename from apache-php7.0/Dockerfile rename to php7.0/apache/Dockerfile diff --git a/apache-php7.2/docker-entrypoint.sh b/php7.0/apache/docker-entrypoint.sh similarity index 100% rename from apache-php7.2/docker-entrypoint.sh rename to php7.0/apache/docker-entrypoint.sh diff --git a/apache-php7.2/makedb.php b/php7.0/apache/makedb.php similarity index 100% rename from apache-php7.2/makedb.php rename to php7.0/apache/makedb.php diff --git a/fpm-php7.0/Dockerfile b/php7.0/fpm/Dockerfile similarity index 100% rename from fpm-php7.0/Dockerfile rename to php7.0/fpm/Dockerfile diff --git a/apache/docker-entrypoint.sh b/php7.0/fpm/docker-entrypoint.sh similarity index 100% rename from apache/docker-entrypoint.sh rename to php7.0/fpm/docker-entrypoint.sh diff --git a/apache/makedb.php b/php7.0/fpm/makedb.php similarity index 100% rename from apache/makedb.php rename to php7.0/fpm/makedb.php diff --git a/apache-php7.1/Dockerfile b/php7.1/apache/Dockerfile similarity index 100% rename from apache-php7.1/Dockerfile rename to php7.1/apache/Dockerfile diff --git a/fpm-php7.0/docker-entrypoint.sh b/php7.1/apache/docker-entrypoint.sh similarity index 100% rename from fpm-php7.0/docker-entrypoint.sh rename to php7.1/apache/docker-entrypoint.sh diff --git a/fpm-php7.0/makedb.php b/php7.1/apache/makedb.php similarity index 100% rename from fpm-php7.0/makedb.php rename to php7.1/apache/makedb.php diff --git a/fpm-php7.1/Dockerfile b/php7.1/fpm/Dockerfile similarity index 100% rename from fpm-php7.1/Dockerfile rename to php7.1/fpm/Dockerfile diff --git a/fpm-php7.1/docker-entrypoint.sh b/php7.1/fpm/docker-entrypoint.sh similarity index 100% rename from fpm-php7.1/docker-entrypoint.sh rename to php7.1/fpm/docker-entrypoint.sh diff --git a/fpm-php7.1/makedb.php b/php7.1/fpm/makedb.php similarity index 100% rename from fpm-php7.1/makedb.php rename to php7.1/fpm/makedb.php diff --git a/apache-php7.2/Dockerfile b/php7.2/apache/Dockerfile similarity index 100% rename from apache-php7.2/Dockerfile rename to php7.2/apache/Dockerfile diff --git a/fpm-php7.2/docker-entrypoint.sh b/php7.2/apache/docker-entrypoint.sh similarity index 100% rename from fpm-php7.2/docker-entrypoint.sh rename to php7.2/apache/docker-entrypoint.sh diff --git a/fpm-php7.2/makedb.php b/php7.2/apache/makedb.php similarity index 100% rename from fpm-php7.2/makedb.php rename to php7.2/apache/makedb.php diff --git a/fpm-php7.2/Dockerfile b/php7.2/fpm/Dockerfile similarity index 100% rename from fpm-php7.2/Dockerfile rename to php7.2/fpm/Dockerfile diff --git a/fpm/docker-entrypoint.sh b/php7.2/fpm/docker-entrypoint.sh similarity index 100% rename from fpm/docker-entrypoint.sh rename to php7.2/fpm/docker-entrypoint.sh diff --git a/fpm/makedb.php b/php7.2/fpm/makedb.php similarity index 100% rename from fpm/makedb.php rename to php7.2/fpm/makedb.php From 733f34e432708302b25fcd1500b8de0678381f24 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Mon, 12 Feb 2018 17:32:52 -0600 Subject: [PATCH 2/5] Change variants in Travis config --- .travis.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index a90e7de..7d00475 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,14 +2,14 @@ language: bash services: docker env: - - VARIANT=apache - - VARIANT=apache-php7.0 - - VARIANT=apache-php7.1 - - VARIANT=apache-php7.2 - - VARIANT=fpm - - VARIANT=fpm-php7.0 - - VARIANT=fpm-php7.1 - - VARIANT=fpm-php7.2 + - VARIANT=php5.6/apache + - VARIANT=php7.0/apache + - VARIANT=php7.1/apache + - VARIANT=php7.2/apache + - VARIANT=php5.6/fpm + - VARIANT=php7.0/fpm + - VARIANT=php7.1/fpm + - VARIANT=php7.2/fpm install: - git clone https://github.com/docker-library/official-images.git ~/official-images From 7d54535f6abac97f5070be17c536803b5c0cccda Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Mon, 12 Feb 2018 17:38:02 -0600 Subject: [PATCH 3/5] Update update script to use new variant structure --- update.php | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/update.php b/update.php index e45094e..981c7bc 100644 --- a/update.php +++ b/update.php @@ -73,19 +73,34 @@ if (!isset($signature)) exit(1); } -foreach (['apache', 'apache-php7.0', 'apache-php7.1', 'apache-php7.2', 'fpm', 'fpm-php7.0', 'fpm-php7.1', 'fpm-php7.2'] as $variant) +$phpVersions = []; +$platforms = ['apache', 'fpm']; + +/** @var DirectoryIterator $dir */ +foreach (new DirectoryIterator(__DIR__) as $dir) { - $dockerfile = __DIR__ . "/$variant/Dockerfile"; + if (substr($dir->getFilename(), 0, 3) === 'php') + { + $phpVersions[] = $dir->getFilename(); + } +} - $fileContents = file_get_contents($dockerfile); - $fileContents = preg_replace('#ENV JOOMLA_VERSION [^ ]*\n#', "ENV JOOMLA_VERSION $version\n", $fileContents); - $fileContents = preg_replace('#ENV JOOMLA_SHA1 [^ ]*\n#', "ENV JOOMLA_SHA1 $signature\n\n", $fileContents); +foreach ($phpVersions as $phpVersion) +{ + foreach ($platforms as $platform) + { + $dockerfile = __DIR__ . "/$phpVersion/$platform/Dockerfile"; - file_put_contents($dockerfile, $fileContents); + $fileContents = file_get_contents($dockerfile); + $fileContents = preg_replace('#ENV JOOMLA_VERSION [^ ]*\n#', "ENV JOOMLA_VERSION $version\n", $fileContents); + $fileContents = preg_replace('#ENV JOOMLA_SHA1 [^ ]*\n#', "ENV JOOMLA_SHA1 $signature\n\n", $fileContents); - // To make management easier, we use these files for all variants - copy(__DIR__ . '/docker-entrypoint.sh', __DIR__ . "/$variant/docker-entrypoint.sh"); - copy(__DIR__ . '/makedb.php', __DIR__ . "/$variant/makedb.php"); + file_put_contents($dockerfile, $fileContents); + + // To make management easier, we use these files for all variants + copy(__DIR__ . '/docker-entrypoint.sh', __DIR__ . "/$phpVersion/$platform/docker-entrypoint.sh"); + copy(__DIR__ . '/makedb.php', __DIR__ . "/$phpVersion/$platform/makedb.php"); + } } echo 'Dockerfile variants updated' . PHP_EOL; From 4c4f9ccd4bccdb8afb630b4458001434a579fb26 Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Mon, 12 Feb 2018 17:51:50 -0600 Subject: [PATCH 4/5] Restructure stackbrew generator --- generate-stackbrew-library.sh | 90 ++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 28 deletions(-) diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 439e3cc..ce63af0 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,9 +1,16 @@ #!/bin/bash set -eu +# Latest available version based on https://downloads.joomla.org/technical-requirements - PHP 7.1 due to known 7.2 bugs still present +defaultPhpVersion='php7.1' +defaultVariant='apache' + self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" +phpVersions=( php*.*/ ) +phpVersions=( "${phpVersions[@]%/}" ) + # get the most recent commit which modified any of "$@" fileCommit() { git log -1 --format='format:%H' HEAD -- "$@" @@ -40,35 +47,62 @@ join() { echo "${out#$sep}" } -for variant in apache apache-php7.0 apache-php7.1 apache-php7.2 fpm fpm-php7.0 fpm-php7.1 fpm-php7.2; do - commit="$(dirCommit "$variant")" +for phpVersion in "${phpVersions[@]}"; do + for variant in apache fpm; do + dir="$phpVersion/$variant" + [ -f "$dir/Dockerfile" ] || continue - fullVersion="$(git show "$commit":"$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "JOOMLA_VERSION" { print $3; exit }')" - if [[ "$fullVersion" != *.*.* && "$fullVersion" == *.* ]]; then - fullVersion+='.0' - fi + commit="$(dirCommit "$dir")" - versionAliases=() - while [ "${fullVersion%.*}" != "$fullVersion" ]; do - versionAliases+=( $fullVersion ) - fullVersion="${fullVersion%.*}" + fullVersion="$(git show "$commit":"$dir/Dockerfile" | awk '$1 == "ENV" && $2 == "JOOMLA_VERSION" { print $3; exit }')" + if [[ "$fullVersion" != *.*.* && "$fullVersion" == *.* ]]; then + fullVersion+='.0' + fi + + versionAliases=() + while [ "${fullVersion%[.-]*}" != "$fullVersion" ]; do + versionAliases+=( $fullVersion ) + fullVersion="${fullVersion%[.-]*}" + done + versionAliases+=( + $fullVersion + latest + ) + + phpVersionAliases=( "${versionAliases[@]/%/-$phpVersion}" ) + phpVersionAliases=( "${phpVersionAliases[@]//latest-/}" ) + + variantAliases=( "${versionAliases[@]/%/-$variant}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) + + phpVersionVariantAliases=( "${versionAliases[@]/%/-$phpVersion-$variant}" ) + phpVersionVariantAliases=( "${phpVersionVariantAliases[@]//latest-/}" ) + + fullAliases=() + + if [ "$phpVersion" = "$defaultPhpVersion" ]; then + fullAliases+=( "${variantAliases[@]}" ) + + if [ "$variant" = "$defaultVariant" ]; then + fullAliases+=( "${versionAliases[@]}" ) + fi + fi + + fullAliases+=( + "${phpVersionVariantAliases[@]}" + ) + + if [ "$variant" = "$defaultVariant" ]; then + fullAliases+=( "${phpVersionAliases[@]}" ) + fi + + variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")" + + echo + cat <<-EOE + Tags: $(join ', ' "${fullAliases[@]}") + GitCommit: $commit + Directory: $dir + EOE done - versionAliases+=( - $fullVersion - latest - ) - - variantAliases=( "${versionAliases[@]/%/-$variant}" ) - variantAliases=( "${variantAliases[@]//latest-/}" ) - - if [ "$variant" = 'apache' ]; then - variantAliases+=( "${versionAliases[@]}" ) - fi - - echo - cat <<-EOE - Tags: $(join ', ' "${variantAliases[@]}") - GitCommit: $commit - Directory: $variant - EOE done From 49b4a116b7138cb822bdbe80ff484f2bf4d9a88a Mon Sep 17 00:00:00 2001 From: Michael Babker Date: Tue, 13 Feb 2018 19:13:24 -0600 Subject: [PATCH 5/5] Move Alpine variants --- .travis.yml | 8 ++++---- {fpm-alpine => php5.6/fpm-alpine}/Dockerfile | 0 {fpm-alpine => php5.6/fpm-alpine}/docker-entrypoint.sh | 0 {fpm-alpine => php5.6/fpm-alpine}/makedb.php | 0 {fpm-php7.0-alpine => php7.0/fpm-alpine}/Dockerfile | 0 .../fpm-alpine}/docker-entrypoint.sh | 0 {fpm-php7.0-alpine => php7.0/fpm-alpine}/makedb.php | 0 {fpm-php7.1-alpine => php7.1/fpm-alpine}/Dockerfile | 0 .../fpm-alpine}/docker-entrypoint.sh | 0 {fpm-php7.1-alpine => php7.1/fpm-alpine}/makedb.php | 0 {fpm-php7.2-alpine => php7.2/fpm-alpine}/Dockerfile | 0 .../fpm-alpine}/docker-entrypoint.sh | 0 {fpm-php7.2-alpine => php7.2/fpm-alpine}/makedb.php | 0 update.php | 2 +- 14 files changed, 5 insertions(+), 5 deletions(-) rename {fpm-alpine => php5.6/fpm-alpine}/Dockerfile (100%) rename {fpm-alpine => php5.6/fpm-alpine}/docker-entrypoint.sh (100%) rename {fpm-alpine => php5.6/fpm-alpine}/makedb.php (100%) rename {fpm-php7.0-alpine => php7.0/fpm-alpine}/Dockerfile (100%) rename {fpm-php7.0-alpine => php7.0/fpm-alpine}/docker-entrypoint.sh (100%) rename {fpm-php7.0-alpine => php7.0/fpm-alpine}/makedb.php (100%) rename {fpm-php7.1-alpine => php7.1/fpm-alpine}/Dockerfile (100%) rename {fpm-php7.1-alpine => php7.1/fpm-alpine}/docker-entrypoint.sh (100%) rename {fpm-php7.1-alpine => php7.1/fpm-alpine}/makedb.php (100%) rename {fpm-php7.2-alpine => php7.2/fpm-alpine}/Dockerfile (100%) rename {fpm-php7.2-alpine => php7.2/fpm-alpine}/docker-entrypoint.sh (100%) rename {fpm-php7.2-alpine => php7.2/fpm-alpine}/makedb.php (100%) diff --git a/.travis.yml b/.travis.yml index 5acdb40..d7e2048 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,10 +10,10 @@ env: - VARIANT=php7.0/fpm - VARIANT=php7.1/fpm - VARIANT=php7.2/fpm - - VARIANT=fpm-alpine - - VARIANT=fpm-php7.0-alpine - - VARIANT=fpm-php7.1-alpine - - VARIANT=fpm-php7.2-alpine + - VARIANT=php5.6/fpm-alpine + - VARIANT=php7.0/fpm-alpine + - VARIANT=php7.1/fpm-alpine + - VARIANT=php7.2/fpm-alpine install: - git clone https://github.com/docker-library/official-images.git ~/official-images diff --git a/fpm-alpine/Dockerfile b/php5.6/fpm-alpine/Dockerfile similarity index 100% rename from fpm-alpine/Dockerfile rename to php5.6/fpm-alpine/Dockerfile diff --git a/fpm-alpine/docker-entrypoint.sh b/php5.6/fpm-alpine/docker-entrypoint.sh similarity index 100% rename from fpm-alpine/docker-entrypoint.sh rename to php5.6/fpm-alpine/docker-entrypoint.sh diff --git a/fpm-alpine/makedb.php b/php5.6/fpm-alpine/makedb.php similarity index 100% rename from fpm-alpine/makedb.php rename to php5.6/fpm-alpine/makedb.php diff --git a/fpm-php7.0-alpine/Dockerfile b/php7.0/fpm-alpine/Dockerfile similarity index 100% rename from fpm-php7.0-alpine/Dockerfile rename to php7.0/fpm-alpine/Dockerfile diff --git a/fpm-php7.0-alpine/docker-entrypoint.sh b/php7.0/fpm-alpine/docker-entrypoint.sh similarity index 100% rename from fpm-php7.0-alpine/docker-entrypoint.sh rename to php7.0/fpm-alpine/docker-entrypoint.sh diff --git a/fpm-php7.0-alpine/makedb.php b/php7.0/fpm-alpine/makedb.php similarity index 100% rename from fpm-php7.0-alpine/makedb.php rename to php7.0/fpm-alpine/makedb.php diff --git a/fpm-php7.1-alpine/Dockerfile b/php7.1/fpm-alpine/Dockerfile similarity index 100% rename from fpm-php7.1-alpine/Dockerfile rename to php7.1/fpm-alpine/Dockerfile diff --git a/fpm-php7.1-alpine/docker-entrypoint.sh b/php7.1/fpm-alpine/docker-entrypoint.sh similarity index 100% rename from fpm-php7.1-alpine/docker-entrypoint.sh rename to php7.1/fpm-alpine/docker-entrypoint.sh diff --git a/fpm-php7.1-alpine/makedb.php b/php7.1/fpm-alpine/makedb.php similarity index 100% rename from fpm-php7.1-alpine/makedb.php rename to php7.1/fpm-alpine/makedb.php diff --git a/fpm-php7.2-alpine/Dockerfile b/php7.2/fpm-alpine/Dockerfile similarity index 100% rename from fpm-php7.2-alpine/Dockerfile rename to php7.2/fpm-alpine/Dockerfile diff --git a/fpm-php7.2-alpine/docker-entrypoint.sh b/php7.2/fpm-alpine/docker-entrypoint.sh similarity index 100% rename from fpm-php7.2-alpine/docker-entrypoint.sh rename to php7.2/fpm-alpine/docker-entrypoint.sh diff --git a/fpm-php7.2-alpine/makedb.php b/php7.2/fpm-alpine/makedb.php similarity index 100% rename from fpm-php7.2-alpine/makedb.php rename to php7.2/fpm-alpine/makedb.php diff --git a/update.php b/update.php index 981c7bc..b03c78c 100644 --- a/update.php +++ b/update.php @@ -74,7 +74,7 @@ if (!isset($signature)) } $phpVersions = []; -$platforms = ['apache', 'fpm']; +$platforms = ['apache', 'fpm', 'fpm-alpine']; /** @var DirectoryIterator $dir */ foreach (new DirectoryIterator(__DIR__) as $dir)