common/example/prep.d/build_base_images.sh

382 lines
15 KiB
Bash
Executable File

#!/bin/sh
# vim: syntax=sh
set -euo pipefail
function build_alma8 {
if [ "${IMAGE_ALMA8_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alma:8.24.4-1 already available"
return
fi
# Image alma8 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/alma:8.24.4-1 > /dev/null 2>&1; then
echo "Building alma:8.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:8.24.4-1 -t danielberteaud/alma8:latest -t danielberteaud/alma:8 --build-arg=ALMA=8 output/images/alma &&\
docker push danielberteaud/alma:8.24.4-1 &&\
docker push danielberteaud/alma8:latest &&\
docker push danielberteaud/alma:8 &&\
echo "danielberteaud/alma:8.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:8.24.4-1 already available"
fi
IMAGE_ALMA8_AVAILABLE=1
}
function build_alma9 {
if [ "${IMAGE_ALMA9_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alma:9.24.4-1 already available"
return
fi
# Image alma9 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/alma:9.24.4-1 > /dev/null 2>&1; then
echo "Building alma:9.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alma:9.24.4-1 -t danielberteaud/alma9:latest -t danielberteaud/alma:9 --build-arg=ALMA=9 output/images/alma &&\
docker push danielberteaud/alma:9.24.4-1 &&\
docker push danielberteaud/alma9:latest &&\
docker push danielberteaud/alma:9 &&\
echo "danielberteaud/alma:9.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/alma:9.24.4-1 already available"
fi
IMAGE_ALMA9_AVAILABLE=1
}
function build_alpine {
if [ "${IMAGE_ALPINE_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/alpine:24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/alpine:24.4-1 > /dev/null 2>&1; then
echo "Building alpine:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/alpine:24.4-1 -t danielberteaud/alpine:latest output/images/alpine &&\
docker push danielberteaud/alpine:24.4-1 &&\
docker push danielberteaud/alpine:latest &&\
echo "danielberteaud/alpine:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/alpine:24.4-1 already available"
fi
IMAGE_ALPINE_AVAILABLE=1
}
function build_java11 {
if [ "${IMAGE_JAVA11_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:11.24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:11.24.4-1 > /dev/null 2>&1; then
echo "Building java:11.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:11.24.4-1 -t danielberteaud/java11:latest -t danielberteaud/java:11 --build-arg=JAVA_VERSION=11 output/images/java &&\
docker push danielberteaud/java:11.24.4-1 &&\
docker push danielberteaud/java11:latest &&\
docker push danielberteaud/java:11 &&\
echo "danielberteaud/java:11.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/java:11.24.4-1 already available"
fi
IMAGE_JAVA11_AVAILABLE=1
}
function build_java17 {
if [ "${IMAGE_JAVA17_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:17.24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:17.24.4-1 > /dev/null 2>&1; then
echo "Building java:17.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:17.24.4-1 -t danielberteaud/java17:latest -t danielberteaud/java:17 --build-arg=JAVA_VERSION=17 output/images/java &&\
docker push danielberteaud/java:17.24.4-1 &&\
docker push danielberteaud/java17:latest &&\
docker push danielberteaud/java:17 &&\
echo "danielberteaud/java:17.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/java:17.24.4-1 already available"
fi
IMAGE_JAVA17_AVAILABLE=1
}
function build_java21 {
if [ "${IMAGE_JAVA21_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:21.24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:21.24.4-1 > /dev/null 2>&1; then
echo "Building java:21.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:21.24.4-1 -t danielberteaud/java21:latest -t danielberteaud/java:21 --build-arg=JAVA_VERSION=21 output/images/java &&\
docker push danielberteaud/java:21.24.4-1 &&\
docker push danielberteaud/java21:latest &&\
docker push danielberteaud/java:21 &&\
echo "danielberteaud/java:21.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/java:21.24.4-1 already available"
fi
IMAGE_JAVA21_AVAILABLE=1
}
function build_java8 {
if [ "${IMAGE_JAVA8_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/java:8.24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/java:8.24.4-1 > /dev/null 2>&1; then
echo "Building java:8.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/java:8.24.4-1 -t danielberteaud/java8:latest -t danielberteaud/java:8 --build-arg=JAVA_VERSION=8 output/images/java &&\
docker push danielberteaud/java:8.24.4-1 &&\
docker push danielberteaud/java8:latest &&\
docker push danielberteaud/java:8 &&\
echo "danielberteaud/java:8.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/java:8.24.4-1 already available"
fi
IMAGE_JAVA8_AVAILABLE=1
}
function build_mariadb {
if [ "${IMAGE_MARIADB_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/mariadb:24.4-1 already available"
return
fi
# Image mariadb depends on mariadb_client
build_mariadb_client
if ! docker manifest inspect danielberteaud/mariadb:24.4-1 > /dev/null 2>&1; then
echo "Building mariadb:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb:24.4-1 -t danielberteaud/mariadb:latest output/images/mariadb &&\
docker push danielberteaud/mariadb:24.4-1 &&\
docker push danielberteaud/mariadb:latest &&\
echo "danielberteaud/mariadb:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb:24.4-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.4-1 already available"
return
fi
# Image mariadb_client depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/mariadb-client:24.4-1 > /dev/null 2>&1; then
echo "Building mariadb-client:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mariadb-client:24.4-1 -t danielberteaud/mariadb-client:latest output/images/mariadb-client &&\
docker push danielberteaud/mariadb-client:24.4-1 &&\
docker push danielberteaud/mariadb-client:latest &&\
echo "danielberteaud/mariadb-client:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/mariadb-client:24.4-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.4-1 already available"
return
fi
# Image mongo50 depends on alma8
build_alma8
if ! docker manifest inspect danielberteaud/mongo:5.0.24.4-1 > /dev/null 2>&1; then
echo "Building mongo:5.0.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/mongo:5.0.24.4-1 -t danielberteaud/mongo:5.0 --build-arg=MONGO_MAJOR=5.0 output/images/mongo &&\
docker push danielberteaud/mongo:5.0.24.4-1 &&\
docker push danielberteaud/mongo:5.0 &&\
echo "danielberteaud/mongo:5.0.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/mongo:5.0.24.4-1 already available"
fi
IMAGE_MONGO50_AVAILABLE=1
}
function build_pgbouncer {
if [ "${IMAGE_PGBOUNCER_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/pgbouncer:24.4-1 already available"
return
fi
# Image pgbouncer depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/pgbouncer:24.4-1 > /dev/null 2>&1; then
echo "Building pgbouncer:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/pgbouncer:24.4-1 -t danielberteaud/pgbouncer:latest output/images/pgbouncer &&\
docker push danielberteaud/pgbouncer:24.4-1 &&\
docker push danielberteaud/pgbouncer:latest &&\
echo "danielberteaud/pgbouncer:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/pgbouncer:24.4-1 already available"
fi
IMAGE_PGBOUNCER_AVAILABLE=1
}
function build_php82 {
if [ "${IMAGE_PHP82_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/php:82.24.4-1 already available"
return
fi
# Image php82 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/php:82.24.4-1 > /dev/null 2>&1; then
echo "Building php:82.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:82.24.4-1 -t danielberteaud/php:82 -t danielberteaud/php82:latest --build-arg=PHP_VERSION=82 output/images/php &&\
docker push danielberteaud/php:82.24.4-1 &&\
docker push danielberteaud/php:82 &&\
docker push danielberteaud/php82:latest &&\
echo "danielberteaud/php:82.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/php:82.24.4-1 already available"
fi
IMAGE_PHP82_AVAILABLE=1
}
function build_php83 {
if [ "${IMAGE_PHP83_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/php:83.24.4-1 already available"
return
fi
# Image php83 depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/php:83.24.4-1 > /dev/null 2>&1; then
echo "Building php:83.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/php:83.24.4-1 -t danielberteaud/php:83 -t danielberteaud/php83:latest --build-arg=PHP_VERSION=83 output/images/php &&\
docker push danielberteaud/php:83.24.4-1 &&\
docker push danielberteaud/php:83 &&\
docker push danielberteaud/php83:latest &&\
echo "danielberteaud/php:83.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/php:83.24.4-1 already available"
fi
IMAGE_PHP83_AVAILABLE=1
}
function build_postgres15 {
if [ "${IMAGE_POSTGRES15_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/postgres:15.24.4-1 already available"
return
fi
# Image postgres15 depends on alma9
build_alma9
if ! docker manifest inspect danielberteaud/postgres:15.24.4-1 > /dev/null 2>&1; then
echo "Building postgres:15.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:15.24.4-1 -t danielberteaud/postgres15:latest -t danielberteaud/postgres:15 --build-arg=PG_VERSION=15 output/images/postgres &&\
docker push danielberteaud/postgres:15.24.4-1 &&\
docker push danielberteaud/postgres15:latest &&\
docker push danielberteaud/postgres:15 &&\
echo "danielberteaud/postgres:15.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:15.24.4-1 already available"
fi
IMAGE_POSTGRES15_AVAILABLE=1
}
function build_postgres16 {
if [ "${IMAGE_POSTGRES16_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/postgres:16.24.4-1 already available"
return
fi
# Image postgres16 depends on alma9
build_alma9
if ! docker manifest inspect danielberteaud/postgres:16.24.4-1 > /dev/null 2>&1; then
echo "Building postgres:16.24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/postgres:16.24.4-1 -t danielberteaud/postgres16:latest -t danielberteaud/postgres:16 --build-arg=PG_VERSION=16 output/images/postgres &&\
docker push danielberteaud/postgres:16.24.4-1 &&\
docker push danielberteaud/postgres16:latest &&\
docker push danielberteaud/postgres:16 &&\
echo "danielberteaud/postgres:16.24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/postgres:16.24.4-1 already available"
fi
IMAGE_POSTGRES16_AVAILABLE=1
}
function build_sqlite {
if [ "${IMAGE_SQLITE_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/sqlite:24.4-1 already available"
return
fi
# Image sqlite depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/sqlite:24.4-1 > /dev/null 2>&1; then
echo "Building sqlite:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/sqlite:24.4-1 -t danielberteaud/sqlite:latest output/images/sqlite &&\
docker push danielberteaud/sqlite:24.4-1 &&\
docker push danielberteaud/sqlite:latest &&\
echo "danielberteaud/sqlite:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/sqlite:24.4-1 already available"
fi
IMAGE_SQLITE_AVAILABLE=1
}
function build_valkey {
if [ "${IMAGE_VALKEY_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/valkey:24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/valkey:24.4-1 > /dev/null 2>&1; then
echo "Building valkey:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/valkey:24.4-1 -t danielberteaud/valkey:latest output/images/valkey &&\
docker push danielberteaud/valkey:24.4-1 &&\
docker push danielberteaud/valkey:latest &&\
echo "danielberteaud/valkey:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/valkey:24.4-1 already available"
fi
IMAGE_VALKEY_AVAILABLE=1
}
function build_wait_for {
if [ "${IMAGE_WAIT_FOR_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/wait-for:24.4-1 already available"
return
fi
if ! docker manifest inspect danielberteaud/wait-for:24.4-1 > /dev/null 2>&1; then
echo "Building wait-for:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wait-for:24.4-1 -t danielberteaud/wait-for:latest output/images/wait-for &&\
docker push danielberteaud/wait-for:24.4-1 &&\
docker push danielberteaud/wait-for:latest &&\
echo "danielberteaud/wait-for:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/wait-for:24.4-1 already available"
fi
IMAGE_WAIT_FOR_AVAILABLE=1
}
function build_wkhtmltopdf {
if [ "${IMAGE_WKHTMLTOPDF_AVAILABLE:-0}" = "1" ]; then
echo "Image danielberteaud/wkhtmltopdf:24.4-1 already available"
return
fi
# Image wkhtmltopdf depends on alpine
build_alpine
if ! docker manifest inspect danielberteaud/wkhtmltopdf:24.4-1 > /dev/null 2>&1; then
echo "Building wkhtmltopdf:24.4-1"
export BUILDKIT_PROGRESS=plain
docker build -t danielberteaud/wkhtmltopdf:24.4-1 -t danielberteaud/wkhtmltopdf:latest output/images/wkhtmltopdf &&\
docker push danielberteaud/wkhtmltopdf:24.4-1 &&\
docker push danielberteaud/wkhtmltopdf:latest &&\
echo "danielberteaud/wkhtmltopdf:24.4-1 pushed to remote repo"
else
echo "Image danielberteaud/wkhtmltopdf:24.4-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_php82
build_php83
build_postgres15
build_postgres16
build_sqlite
build_valkey
build_wait_for
build_wkhtmltopdf