Handle dependencies between base images

This commit is contained in:
Daniel Berteaud 2024-03-05 11:16:26 +01:00
parent 37543d4bfc
commit d77b66bc77
3 changed files with 428 additions and 212 deletions

View File

@ -2,205 +2,378 @@
# vim: syntax=sh
set -euo pipefail
if ! docker manifest inspect danielberteaud/alma:8.24.3-1 > /dev/null 2>&1; then
echo "Building alma:8.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:8.24.3-1 -t danielberteaud/alma8:latest -t danielberteaud/alma:8 --build-arg=ALMA=8 output/images/alma &&\
docker push danielberteaud/alma:8.24.3-1 &&\
docker push danielberteaud/alma8:latest &&\
docker push danielberteaud/alma:8 &&\
echo "danielberteaud/alma:8.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:8.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/alma:9.24.3-1 > /dev/null 2>&1; then
echo "Building alma:9.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:9.24.3-1 -t danielberteaud/alma9:latest -t danielberteaud/alma:9 --build-arg=ALMA=9 output/images/alma &&\
docker push danielberteaud/alma:9.24.3-1 &&\
docker push danielberteaud/alma9:latest &&\
docker push danielberteaud/alma:9 &&\
echo "danielberteaud/alma:9.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:9.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/alpine:24.3-1 > /dev/null 2>&1; then
echo "Building alpine:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alpine:24.3-1 -t danielberteaud/alpine:latest output/images/alpine &&\
docker push danielberteaud/alpine:24.3-1 &&\
docker push danielberteaud/alpine:latest &&\
echo "danielberteaud/alpine:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alpine:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/java:11.24.3-1 > /dev/null 2>&1; then
echo "Building java:11.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:11.24.3-1 -t danielberteaud/java11:latest -t danielberteaud/java:11 --build-arg=JAVA_VERSION=11 output/images/java &&\
docker push danielberteaud/java:11.24.3-1 &&\
docker push danielberteaud/java11:latest &&\
docker push danielberteaud/java:11 &&\
echo "danielberteaud/java:11.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:11.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/java:17.24.3-1 > /dev/null 2>&1; then
echo "Building java:17.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:17.24.3-1 -t danielberteaud/java17:latest -t danielberteaud/java:17 --build-arg=JAVA_VERSION=17 output/images/java &&\
docker push danielberteaud/java:17.24.3-1 &&\
docker push danielberteaud/java17:latest &&\
docker push danielberteaud/java:17 &&\
echo "danielberteaud/java:17.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:17.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/java:21.24.3-1 > /dev/null 2>&1; then
echo "Building java:21.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:21.24.3-1 -t danielberteaud/java21:latest -t danielberteaud/java:21 --build-arg=JAVA_VERSION=21 output/images/java &&\
docker push danielberteaud/java:21.24.3-1 &&\
docker push danielberteaud/java21:latest &&\
docker push danielberteaud/java:21 &&\
echo "danielberteaud/java:21.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:21.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/java:8.24.3-1 > /dev/null 2>&1; then
echo "Building java:8.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:8.24.3-1 -t danielberteaud/java8:latest -t danielberteaud/java:8 --build-arg=JAVA_VERSION=8 output/images/java &&\
docker push danielberteaud/java:8.24.3-1 &&\
docker push danielberteaud/java8:latest &&\
docker push danielberteaud/java:8 &&\
echo "danielberteaud/java:8.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:8.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/mariadb:24.3-1 > /dev/null 2>&1; then
echo "Building mariadb:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb:24.3-1 -t danielberteaud/mariadb:latest output/images/mariadb &&\
docker push danielberteaud/mariadb:24.3-1 &&\
docker push danielberteaud/mariadb:latest &&\
echo "danielberteaud/mariadb:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/mariadb-client:24.3-1 > /dev/null 2>&1; then
echo "Building mariadb-client:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb-client:24.3-1 -t danielberteaud/mariadb-client:latest output/images/mariadb-client &&\
docker push danielberteaud/mariadb-client:24.3-1 &&\
docker push danielberteaud/mariadb-client:latest &&\
echo "danielberteaud/mariadb-client:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb-client:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/mongo:5.0.24.3-1 > /dev/null 2>&1; then
echo "Building mongo:5.0.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mongo:5.0.24.3-1 -t danielberteaud/mongo:5.0 --build-arg=MONGO_MAJOR=5.0 output/images/mongo &&\
docker push danielberteaud/mongo:5.0.24.3-1 &&\
docker push danielberteaud/mongo:5.0 &&\
echo "danielberteaud/mongo:5.0.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mongo:5.0.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/pgbouncer:24.3-1 > /dev/null 2>&1; then
echo "Building pgbouncer:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/pgbouncer:24.3-1 -t danielberteaud/pgbouncer:latest output/images/pgbouncer &&\
docker push danielberteaud/pgbouncer:24.3-1 &&\
docker push danielberteaud/pgbouncer:latest &&\
echo "danielberteaud/pgbouncer:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/pgbouncer:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/pgcat:1.1.1-1 > /dev/null 2>&1; then
echo "Building pgcat:1.1.1-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/pgcat:1.1.1-1 -t danielberteaud/pgcat:latest output/images/pgcat &&\
docker push danielberteaud/pgcat:1.1.1-1 &&\
docker push danielberteaud/pgcat:latest &&\
echo "danielberteaud/pgcat:1.1.1-1 pushed to remote repo"
else
echo "Image danielberteaud/pgcat:1.1.1-1 already available"
fi
if ! docker manifest inspect danielberteaud/php:82.24.3-1 > /dev/null 2>&1; then
echo "Building php:82.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:82.24.3-1 -t danielberteaud/php:82 -t danielberteaud/php82:latest --build-arg=PHP_VERSION=82 output/images/php &&\
docker push danielberteaud/php:82.24.3-1 &&\
docker push danielberteaud/php:82 &&\
docker push danielberteaud/php82:latest &&\
echo "danielberteaud/php:82.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/php:82.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/php:83.24.3-1 > /dev/null 2>&1; then
echo "Building php:83.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:83.24.3-1 -t danielberteaud/php:83 -t danielberteaud/php83:latest --build-arg=PHP_VERSION=83 output/images/php &&\
docker push danielberteaud/php:83.24.3-1 &&\
docker push danielberteaud/php:83 &&\
docker push danielberteaud/php83:latest &&\
echo "danielberteaud/php:83.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/php:83.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/postgres:15.24.3-1 > /dev/null 2>&1; then
echo "Building postgres:15.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:15.24.3-1 -t danielberteaud/postgres15:latest -t danielberteaud/postgres:15 --build-arg=PG_VERSION=15 output/images/postgres &&\
docker push danielberteaud/postgres:15.24.3-1 &&\
docker push danielberteaud/postgres15:latest &&\
docker push danielberteaud/postgres:15 &&\
echo "danielberteaud/postgres:15.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:15.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/postgres:16.24.3-1 > /dev/null 2>&1; then
echo "Building postgres:16.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:16.24.3-1 -t danielberteaud/postgres16:latest -t danielberteaud/postgres:16 --build-arg=PG_VERSION=16 output/images/postgres &&\
docker push danielberteaud/postgres:16.24.3-1 &&\
docker push danielberteaud/postgres16:latest &&\
docker push danielberteaud/postgres:16 &&\
echo "danielberteaud/postgres:16.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:16.24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/sqlite:24.3-1 > /dev/null 2>&1; then
echo "Building sqlite:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/sqlite:24.3-1 -t danielberteaud/sqlite:latest output/images/sqlite &&\
docker push danielberteaud/sqlite:24.3-1 &&\
docker push danielberteaud/sqlite:latest &&\
echo "danielberteaud/sqlite:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/sqlite:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/wait-for:24.3-1 > /dev/null 2>&1; then
echo "Building wait-for:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wait-for:24.3-1 -t danielberteaud/wait-for:latest output/images/wait-for &&\
docker push danielberteaud/wait-for:24.3-1 &&\
docker push danielberteaud/wait-for:latest &&\
echo "danielberteaud/wait-for:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/wait-for:24.3-1 already available"
fi
if ! docker manifest inspect danielberteaud/wkhtmltopdf:24.3-1 > /dev/null 2>&1; then
echo "Building wkhtmltopdf:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wkhtmltopdf:24.3-1 -t danielberteaud/wkhtmltopdf:latest output/images/wkhtmltopdf &&\
docker push danielberteaud/wkhtmltopdf:24.3-1 &&\
docker push danielberteaud/wkhtmltopdf:latest &&\
echo "danielberteaud/wkhtmltopdf:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/wkhtmltopdf:24.3-1 already available"
fi
function build_alma8 {
if [ "${IMAGE_ALMA8_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alma:8.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/alma:8.24.3-1 > /dev/null 2>&1; then
echo "Building alma:8.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:8.24.3-1 -t danielberteaud/alma8:latest -t danielberteaud/alma:8 --build-arg=ALMA=8 output/images/alma &&\
docker push danielberteaud/alma:8.24.3-1 &&\
docker push danielberteaud/alma8:latest &&\
docker push danielberteaud/alma:8 &&\
echo "danielberteaud/alma:8.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:8.24.3-1 already available"
fi
IMAGE_ALMA8_AVAILABLE=1
}
function build_alma9 {
if [ "${IMAGE_ALMA9_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alma:9.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/alma:9.24.3-1 > /dev/null 2>&1; then
echo "Building alma:9.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:9.24.3-1 -t danielberteaud/alma9:latest -t danielberteaud/alma:9 --build-arg=ALMA=9 output/images/alma &&\
docker push danielberteaud/alma:9.24.3-1 &&\
docker push danielberteaud/alma9:latest &&\
docker push danielberteaud/alma:9 &&\
echo "danielberteaud/alma:9.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:9.24.3-1 already available"
fi
IMAGE_ALMA9_AVAILABLE=1
}
function build_alpine {
if [ "${IMAGE_ALPINE_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alpine:24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/alpine:24.3-1 > /dev/null 2>&1; then
echo "Building alpine:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alpine:24.3-1 -t danielberteaud/alpine:latest output/images/alpine &&\
docker push danielberteaud/alpine:24.3-1 &&\
docker push danielberteaud/alpine:latest &&\
echo "danielberteaud/alpine:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/alpine:24.3-1 already available"
fi
IMAGE_ALPINE_AVAILABLE=1
}
function build_java11 {
if [ "${IMAGE_JAVA11_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:11.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:11.24.3-1 > /dev/null 2>&1; then
echo "Building java:11.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:11.24.3-1 -t danielberteaud/java11:latest -t danielberteaud/java:11 --build-arg=JAVA_VERSION=11 output/images/java &&\
docker push danielberteaud/java:11.24.3-1 &&\
docker push danielberteaud/java11:latest &&\
docker push danielberteaud/java:11 &&\
echo "danielberteaud/java:11.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:11.24.3-1 already available"
fi
IMAGE_JAVA11_AVAILABLE=1
}
function build_java17 {
if [ "${IMAGE_JAVA17_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:17.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:17.24.3-1 > /dev/null 2>&1; then
echo "Building java:17.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:17.24.3-1 -t danielberteaud/java17:latest -t danielberteaud/java:17 --build-arg=JAVA_VERSION=17 output/images/java &&\
docker push danielberteaud/java:17.24.3-1 &&\
docker push danielberteaud/java17:latest &&\
docker push danielberteaud/java:17 &&\
echo "danielberteaud/java:17.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:17.24.3-1 already available"
fi
IMAGE_JAVA17_AVAILABLE=1
}
function build_java21 {
if [ "${IMAGE_JAVA21_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:21.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:21.24.3-1 > /dev/null 2>&1; then
echo "Building java:21.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:21.24.3-1 -t danielberteaud/java21:latest -t danielberteaud/java:21 --build-arg=JAVA_VERSION=21 output/images/java &&\
docker push danielberteaud/java:21.24.3-1 &&\
docker push danielberteaud/java21:latest &&\
docker push danielberteaud/java:21 &&\
echo "danielberteaud/java:21.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:21.24.3-1 already available"
fi
IMAGE_JAVA21_AVAILABLE=1
}
function build_java8 {
if [ "${IMAGE_JAVA8_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:8.24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:8.24.3-1 > /dev/null 2>&1; then
echo "Building java:8.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:8.24.3-1 -t danielberteaud/java8:latest -t danielberteaud/java:8 --build-arg=JAVA_VERSION=8 output/images/java &&\
docker push danielberteaud/java:8.24.3-1 &&\
docker push danielberteaud/java8:latest &&\
docker push danielberteaud/java:8 &&\
echo "danielberteaud/java:8.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/java:8.24.3-1 already available"
fi
IMAGE_JAVA8_AVAILABLE=1
}
function build_mariadb {
if [ "${IMAGE_MARIADB_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/mariadb:24.3-1 already available"
return
fi
# Image mariadb depends on mariadb_client
build_mariadb_client
if ! docker manifest inspect danielberteaud/mariadb:24.3-1 > /dev/null 2>&1; then
echo "Building mariadb:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb:24.3-1 -t danielberteaud/mariadb:latest output/images/mariadb &&\
docker push danielberteaud/mariadb:24.3-1 &&\
docker push danielberteaud/mariadb:latest &&\
echo "danielberteaud/mariadb:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb:24.3-1 already available"
fi
IMAGE_MARIADB_AVAILABLE=1
}
function build_mariadb_client {
if [ "${IMAGE_MARIADB_CLIENT_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/mariadb-client:24.3-1 already available"
return
fi
# Image mariadb_client depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/mariadb-client:24.3-1 > /dev/null 2>&1; then
echo "Building mariadb-client:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb-client:24.3-1 -t danielberteaud/mariadb-client:latest output/images/mariadb-client &&\
docker push danielberteaud/mariadb-client:24.3-1 &&\
docker push danielberteaud/mariadb-client:latest &&\
echo "danielberteaud/mariadb-client:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb-client:24.3-1 already available"
fi
IMAGE_MARIADB_CLIENT_AVAILABLE=1
}
function build_mongo50 {
if [ "${IMAGE_MONGO50_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/mongo:5.0.24.3-1 already available"
return
fi
# Image mongo50 depends on alma8
build_alma8
if ! docker manifest inspect danielberteaud/mongo:5.0.24.3-1 > /dev/null 2>&1; then
echo "Building mongo:5.0.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mongo:5.0.24.3-1 -t danielberteaud/mongo:5.0 --build-arg=MONGO_MAJOR=5.0 output/images/mongo &&\
docker push danielberteaud/mongo:5.0.24.3-1 &&\
docker push danielberteaud/mongo:5.0 &&\
echo "danielberteaud/mongo:5.0.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/mongo:5.0.24.3-1 already available"
fi
IMAGE_MONGO50_AVAILABLE=1
}
function build_pgbouncer {
if [ "${IMAGE_PGBOUNCER_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/pgbouncer:24.3-1 already available"
return
fi
# Image pgbouncer depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/pgbouncer:24.3-1 > /dev/null 2>&1; then
echo "Building pgbouncer:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/pgbouncer:24.3-1 -t danielberteaud/pgbouncer:latest output/images/pgbouncer &&\
docker push danielberteaud/pgbouncer:24.3-1 &&\
docker push danielberteaud/pgbouncer:latest &&\
echo "danielberteaud/pgbouncer:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/pgbouncer:24.3-1 already available"
fi
IMAGE_PGBOUNCER_AVAILABLE=1
}
function build_pgcat {
if [ "${IMAGE_PGCAT_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/pgcat:1.1.1-1 already available"
return
fi
# Image pgcat depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/pgcat:1.1.1-1 > /dev/null 2>&1; then
echo "Building pgcat:1.1.1-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/pgcat:1.1.1-1 -t danielberteaud/pgcat:latest output/images/pgcat &&\
docker push danielberteaud/pgcat:1.1.1-1 &&\
docker push danielberteaud/pgcat:latest &&\
echo "danielberteaud/pgcat:1.1.1-1 pushed to remote repo"
else
echo "Image danielberteaud/pgcat:1.1.1-1 already available"
fi
IMAGE_PGCAT_AVAILABLE=1
}
function build_php82 {
if [ "${IMAGE_PHP82_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/php:82.24.3-1 already available"
return
fi
# Image php82 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/php:82.24.3-1 > /dev/null 2>&1; then
echo "Building php:82.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:82.24.3-1 -t danielberteaud/php:82 -t danielberteaud/php82:latest --build-arg=PHP_VERSION=82 output/images/php &&\
docker push danielberteaud/php:82.24.3-1 &&\
docker push danielberteaud/php:82 &&\
docker push danielberteaud/php82:latest &&\
echo "danielberteaud/php:82.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/php:82.24.3-1 already available"
fi
IMAGE_PHP82_AVAILABLE=1
}
function build_php83 {
if [ "${IMAGE_PHP83_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/php:83.24.3-1 already available"
return
fi
# Image php83 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/php:83.24.3-1 > /dev/null 2>&1; then
echo "Building php:83.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:83.24.3-1 -t danielberteaud/php:83 -t danielberteaud/php83:latest --build-arg=PHP_VERSION=83 output/images/php &&\
docker push danielberteaud/php:83.24.3-1 &&\
docker push danielberteaud/php:83 &&\
docker push danielberteaud/php83:latest &&\
echo "danielberteaud/php:83.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/php:83.24.3-1 already available"
fi
IMAGE_PHP83_AVAILABLE=1
}
function build_postgres15 {
if [ "${IMAGE_POSTGRES15_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/postgres:15.24.3-1 already available"
return
fi
# Image postgres15 depends on alma9
build_alma9
if ! docker manifest inspect danielberteaud/postgres:15.24.3-1 > /dev/null 2>&1; then
echo "Building postgres:15.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:15.24.3-1 -t danielberteaud/postgres15:latest -t danielberteaud/postgres:15 --build-arg=PG_VERSION=15 output/images/postgres &&\
docker push danielberteaud/postgres:15.24.3-1 &&\
docker push danielberteaud/postgres15:latest &&\
docker push danielberteaud/postgres:15 &&\
echo "danielberteaud/postgres:15.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:15.24.3-1 already available"
fi
IMAGE_POSTGRES15_AVAILABLE=1
}
function build_postgres16 {
if [ "${IMAGE_POSTGRES16_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/postgres:16.24.3-1 already available"
return
fi
# Image postgres16 depends on alma9
build_alma9
if ! docker manifest inspect danielberteaud/postgres:16.24.3-1 > /dev/null 2>&1; then
echo "Building postgres:16.24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:16.24.3-1 -t danielberteaud/postgres16:latest -t danielberteaud/postgres:16 --build-arg=PG_VERSION=16 output/images/postgres &&\
docker push danielberteaud/postgres:16.24.3-1 &&\
docker push danielberteaud/postgres16:latest &&\
docker push danielberteaud/postgres:16 &&\
echo "danielberteaud/postgres:16.24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:16.24.3-1 already available"
fi
IMAGE_POSTGRES16_AVAILABLE=1
}
function build_sqlite {
if [ "${IMAGE_SQLITE_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/sqlite:24.3-1 already available"
return
fi
# Image sqlite depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/sqlite:24.3-1 > /dev/null 2>&1; then
echo "Building sqlite:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/sqlite:24.3-1 -t danielberteaud/sqlite:latest output/images/sqlite &&\
docker push danielberteaud/sqlite:24.3-1 &&\
docker push danielberteaud/sqlite:latest &&\
echo "danielberteaud/sqlite:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/sqlite:24.3-1 already available"
fi
IMAGE_SQLITE_AVAILABLE=1
}
function build_wait_for {
if [ "${IMAGE_WAIT_FOR_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/wait-for:24.3-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/wait-for:24.3-1 > /dev/null 2>&1; then
echo "Building wait-for:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wait-for:24.3-1 -t danielberteaud/wait-for:latest output/images/wait-for &&\
docker push danielberteaud/wait-for:24.3-1 &&\
docker push danielberteaud/wait-for:latest &&\
echo "danielberteaud/wait-for:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/wait-for:24.3-1 already available"
fi
IMAGE_WAIT_FOR_AVAILABLE=1
}
function build_wkhtmltopdf {
if [ "${IMAGE_WKHTMLTOPDF_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/wkhtmltopdf:24.3-1 already available"
return
fi
# Image wkhtmltopdf depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/wkhtmltopdf:24.3-1 > /dev/null 2>&1; then
echo "Building wkhtmltopdf:24.3-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wkhtmltopdf:24.3-1 -t danielberteaud/wkhtmltopdf:latest output/images/wkhtmltopdf &&\
docker push danielberteaud/wkhtmltopdf:24.3-1 &&\
docker push danielberteaud/wkhtmltopdf:latest &&\
echo "danielberteaud/wkhtmltopdf:24.3-1 pushed to remote repo"
else
echo "Image danielberteaud/wkhtmltopdf:24.3-1 already available"
fi
IMAGE_WKHTMLTOPDF_AVAILABLE=1
}
build_alma8
build_alma9
build_alpine
build_java11
build_java17
build_java21
build_java8
build_mariadb
build_mariadb_client
build_mongo50
build_pgbouncer
build_pgcat
build_php82
build_php83
build_postgres15
build_postgres16
build_sqlite
build_wait_for
build_wkhtmltopdf

View File

@ -4,27 +4,48 @@
set -euo pipefail
[[- range $k, $v := .docker.base_images ]]
[[- $image := printf "%s/%s" ($.docker.repo | regexp.Replace "/$" "") $v.image ]]
if ! docker manifest inspect [[ $image ]] > /dev/null 2>&1; then
echo "Building [[ $v.image ]]"
export BUILDKIT_PROGRESS=plain
docker build -t [[ $image ]]
function build_[[ $k ]] {
[[- $image := printf "%s/%s" ($.docker.repo | regexp.Replace "/$" "") $v.image ]]
if [ "${IMAGE_[[ $k | toUpper ]]_AVAILABLE:-0}" = "1" ]; then
echo "Image [[ $image ]] already available"
return
fi
[[- if has $v "depends_on" ]]
[[- if isKind "string" $v.depends_on ]]
# Image [[ $k ]] depends on [[ $v.depends_on ]]
build_[[ $v.depends_on ]]
[[- else if isKind "slice" $v.depends_on ]]
[[- range $dep := $v.depends_on ]]
# Image [[ $k ]] depends on [[ $dep ]]
build_[[ $dep ]]
[[- end ]]
[[- end ]]
[[- end ]]
if ! docker manifest inspect [[ $image ]] > /dev/null 2>&1; then
echo "Building [[ $v.image ]]"
export BUILDKIT_PROGRESS=plain
docker build -t [[ $image ]]
[[- if has $v "tags" ]]
[[- range $index, $tag := $v.tags ]] -t [[ $.docker.repo | regexp.Replace "/$" "" ]]/[[ $tag ]][[ end ]]
[[- end -]]
[[- if has $v "build_args" ]]
[[- range $arg, $val := $v.build_args ]] --build-arg=[[ $arg ]]=[[ $val ]][[ end ]]
[[- end ]] output/images/[[ $v.image | regexp.Replace ":.*" "" ]] &&\
docker push [[ $image ]] &&\
docker push [[ $image ]] &&\
[[- if has $v "tags" ]]
[[- range $index, $tag := $v.tags ]]
docker push [[ $.docker.repo | regexp.Replace "/$" "" ]]/[[ $tag ]] &&\
docker push [[ $.docker.repo | regexp.Replace "/$" "" ]]/[[ $tag ]] &&\
[[- end ]]
[[- end ]]
echo "[[ $image ]] pushed to remote repo"
else
echo "Image [[ $image ]] already available"
fi
echo "[[ $image ]] pushed to remote repo"
else
echo "Image [[ $image ]] already available"
fi
IMAGE_[[ $k | toUpper ]]_AVAILABLE=1
}
[[- end ]]
[[- range $k, $v := .docker.base_images ]]
build_[[ $k ]]
[[- end ]]

View File

@ -273,6 +273,8 @@ docker:
tags:
- postgres15:latest
- postgres:15
depends_on:
- alma9
postgres16:
image: postgres:16.24.3-1
@ -281,18 +283,24 @@ docker:
tags:
- postgres16:latest
- postgres:16
depends_on:
- alma9
# Mariadb client
mariadb_client:
image: mariadb-client:24.3-1
tags:
- mariadb-client:latest
depends_on:
- alpine
# MariaDB server
mariadb:
image: mariadb:24.3-1
tags:
- mariadb:latest
depends_on:
- mariadb_client
# MongoDB
mongo50:
@ -301,24 +309,32 @@ docker:
MONGO_MAJOR: "5.0"
tags:
- mongo:5.0
depends_on:
- alma8
# SQLite
sqlite:
image: sqlite:24.3-1
tags:
- sqlite:latest
depends_on:
- alpine
# pgbouncer
pgbouncer:
image: pgbouncer:24.3-1
tags:
- pgbouncer:latest
depends_on:
- alpine
# pgcat
pgcat:
image: pgcat:1.1.1-1
tags:
- pgcat:latest
depends_on:
- alpine
# PHP
php82:
@ -328,6 +344,8 @@ docker:
tags:
- php:82
- php82:latest
depends_on:
- alpine
php83:
image: php:83.24.3-1
@ -336,10 +354,14 @@ docker:
tags:
- php:83
- php83:latest
depends_on:
- alpine
# alpine based wkhtml2pdf
wkhtmltopdf:
image: wkhtmltopdf:24.3-1
tags:
- wkhtmltopdf:latest
depends_on:
- alpine