#!/usr/bin/env bash # ./scripts/build-docker-image.sh --debug --build # Charge le fichier .env rootDir=$(dirname "$BASH_SOURCE") source $rootDir/../.env isApache=false isFrankenphp=false phpVersion="" serverVersion="" serverName="" withDebug=false withBuild=false for arg in "$@"; do case "$arg" in --debug) withDebug=true ;; --build) withBuild=true ;; esac done # Vérifie que le repository de l'image est définie if [[ "$SERVER_IMAGE_REPOSITORY" == "" ]]; then echo "Le repository de l'image est inconnu. Veuillez définir la variable d'environnement SERVER_IMAGE_REPOSITORY." exit 1 fi # Détermine si l'image du serveur est Apache ou FrankenPHP if [[ "$SERVER_PHP_IMAGE" == *"apache"* ]]; then isApache=true phpVersion="${SERVER_PHP_IMAGE#*:}" phpVersion="${phpVersion%%-*}" serverVersion="2.4" serverName="Apache" fi if [[ "$SERVER_PHP_IMAGE" == *"frankenphp"* ]]; then isFrankenphp=true phpVersion="${SERVER_PHP_IMAGE##*-php}" serverVersion="${SERVER_PHP_IMAGE#*:}" serverVersion="${serverVersion%%-*}" serverName="FrankenPHP" fi # Vérifie le numéro de la version PHP if [[ ! "$phpVersion" =~ ^[0-9]+(\.[0-9]+)*$ ]]; then echo "Version de PHP incorrecte : $phpVersion" exit 1 fi # Vérifie le numéro de la version du serveur if [[ ! "$serverVersion" =~ ^[0-9]+(\.[0-9]+)*$ ]]; then echo "Version du serveur incorrecte : $serverVersion" exit 1 fi # Détermine le titre de l'image serverImageTitleLabel="Image PHP :phpVersion avec :serverName :serverVersion" serverImageTitleLabel=${serverImageTitleLabel/:phpVersion/${phpVersion}} serverImageTitleLabel=${serverImageTitleLabel/:serverName/${serverName}} serverImageTitleLabel=${serverImageTitleLabel/:serverVersion/${serverVersion}} # Détermine la description de l'image serverImageDescriptionLabel="Installation d'un serveur :serverName avec la version :phpVersion de PHP. Inclus dans l'image : Composer, Node, NPM, MariaDB, Memchached, Redis et PIE (PHP Installer for Extensions)." serverImageDescriptionLabel=${serverImageDescriptionLabel/:phpVersion/${phpVersion}} serverImageDescriptionLabel=${serverImageDescriptionLabel/:serverName/${serverName}} # Détermine le tag de l'image dockerImageTag="${SERVER_IMAGE_REPOSITORY}:${phpVersion}-${serverName,,}-${serverVersion}" buildCommand="docker build \ -f Dockerfile \ -t ${dockerImageTag} \ --build-arg SERVER_PHP_IMAGE=${SERVER_PHP_IMAGE} \ --build-arg SERVER_IMAGE_TITLE_LABEL=\"${serverImageTitleLabel}\" \ --build-arg SERVER_IMAGE_DESCRIPTION_LABEL=\"${serverImageDescriptionLabel}\" \ --build-arg WITH_MEMCACHED=true \ --build-arg WITH_REDIS=true \ . " if [[ "$withDebug" == "true" ]]; then echo $buildCommand fi if [[ "$withBuild" == "true" ]]; then eval "$buildCommand" echo "Build de l'image ${phpVersion}-${serverName,,}-${serverVersion} terminé." fi