support lancement dans container
This commit is contained in:
		
							parent
							
								
									a03de2a099
								
							
						
					
					
						commit
						b42f558e81
					
				@ -15,39 +15,106 @@ LAUNCHERPATH=.launcher.php
 | 
			
		||||
# Chemin relatif des scripts PHP wrappés
 | 
			
		||||
WRAPPEDPATH=
 | 
			
		||||
 | 
			
		||||
# Nom du service dans docker-compose.yml
 | 
			
		||||
COMPOSE_SERVICE=web
 | 
			
		||||
 | 
			
		||||
# Montages dans docker-compose.yml
 | 
			
		||||
# les répertoires relatifs le sont par rapport au répertoire du projet
 | 
			
		||||
COMPOSE_MOUNTS=(
 | 
			
		||||
    devel:/data/php74-template
 | 
			
		||||
    .:/var/www/app
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
###############################################################################
 | 
			
		||||
 | 
			
		||||
case "${RUNPHP_MODE:-auto}" in
 | 
			
		||||
auto)
 | 
			
		||||
    RUNPHP_MODE=host
 | 
			
		||||
    if [ -f /.dockerenv ]; then
 | 
			
		||||
        RUNPHP_MODE=docker
 | 
			
		||||
    elif [ -f /proc/1/cgroup ]; then
 | 
			
		||||
        grep -q ':/docker/' /proc/1/cgroup && RUNPHP_MODE=docker
 | 
			
		||||
    elif [ -f /proc/self/mountinfo ]; then
 | 
			
		||||
        grep -q ' /docker/' /proc/self/mountinfo && RUNPHP_MODE=docker
 | 
			
		||||
    fi
 | 
			
		||||
    ;;
 | 
			
		||||
docker) RUNPHP_MODE=docker;;
 | 
			
		||||
host) RUNPHP_MODE=host;;
 | 
			
		||||
direct) RUNPHP_MODE=direct;;
 | 
			
		||||
*) RUNPHP_MODE=host;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
MYDIR="$(dirname -- "$0")"
 | 
			
		||||
MYNAME="$(basename -- "$0")"
 | 
			
		||||
 | 
			
		||||
if [ ! -L "$0" ]; then
 | 
			
		||||
    echo "\
 | 
			
		||||
$0
 | 
			
		||||
Ce script doit être lancé en tant que lien symbolique avec un nom de la forme
 | 
			
		||||
'monscript.php' et lance le script PHP du même nom situé dans le même répertoire
 | 
			
		||||
avec l'utilisateur www-data
 | 
			
		||||
avec l'utilisateur www-data"
 | 
			
		||||
 | 
			
		||||
    if [ "$RUNPHP_MODE" == host ]; then
 | 
			
		||||
        echo "\
 | 
			
		||||
----------------------------------------
 | 
			
		||||
Vérification des liens..."
 | 
			
		||||
    cd "$MYDIR"
 | 
			
		||||
    for i in *.php*; do
 | 
			
		||||
        [ -f "$i" ] || continue
 | 
			
		||||
        name="bin/${i%.*}.php"
 | 
			
		||||
        dest="../_cli/_wrapper.sh"
 | 
			
		||||
        link="../bin/${i%.*}.php"
 | 
			
		||||
        if [ -L "$link" ]; then
 | 
			
		||||
            echo "* $name OK"
 | 
			
		||||
        elif [ -e "$link" ]; then
 | 
			
		||||
            echo "* $name KO (not a link)"
 | 
			
		||||
        else
 | 
			
		||||
            echo "* $name NEW"
 | 
			
		||||
            ln -s "$dest" "$link" || exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
        cd "$MYDIR"
 | 
			
		||||
        for i in *.php*; do
 | 
			
		||||
            [ -f "$i" ] || continue
 | 
			
		||||
            name="bin/${i%.*}.php"
 | 
			
		||||
            dest="../_cli/_wrapper.sh"
 | 
			
		||||
            link="../bin/${i%.*}.php"
 | 
			
		||||
            if [ -L "$link" ]; then
 | 
			
		||||
                echo "* $name OK"
 | 
			
		||||
            elif [ -e "$link" ]; then
 | 
			
		||||
                echo "* $name KO (not a link)"
 | 
			
		||||
            else
 | 
			
		||||
                echo "* $name NEW"
 | 
			
		||||
                ln -s "$dest" "$link" || exit 1
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MYTRUESELF="$(readlink -f "$0")"
 | 
			
		||||
MYTRUEDIR="$(dirname -- "$MYTRUESELF")"
 | 
			
		||||
PROJDIR="$(cd "$MYTRUEDIR${PROJPATH:+/$PROJPATH}"; pwd)"
 | 
			
		||||
 | 
			
		||||
if [ "$RUNPHP_MODE" == host ]; then
 | 
			
		||||
    cwd="$(pwd)"
 | 
			
		||||
    found=
 | 
			
		||||
    workdir=
 | 
			
		||||
    for mounts in "${COMPOSE_MOUNTS[@]}"; do
 | 
			
		||||
        hdir="${mounts%%:*}"
 | 
			
		||||
        ddir="${mounts#*:}"
 | 
			
		||||
        hdir="$(cd "$PROJDIR/$hdir"; pwd)"
 | 
			
		||||
        if [ "$cwd" == "$hdir" ]; then
 | 
			
		||||
            found=1
 | 
			
		||||
            workdir="$ddir"
 | 
			
		||||
            break
 | 
			
		||||
        elif [ "${cwd#$hdir/}" != "$cwd" ]; then
 | 
			
		||||
            found=1
 | 
			
		||||
            workdir="$ddir/${cwd#$hdir/}"
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    if [ -z "$found" ]; then
 | 
			
		||||
        echo "Impossible de mapper le répertoire courant avec les montages du container"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    args=(
 | 
			
		||||
        docker compose run
 | 
			
		||||
        ${RUNPHP_BUILD:+--build}
 | 
			
		||||
        --rm
 | 
			
		||||
        --workdir "$workdir"
 | 
			
		||||
        "$COMPOSE_SERVICE"
 | 
			
		||||
        exec "$MYNAME"
 | 
			
		||||
        "$@"
 | 
			
		||||
    )
 | 
			
		||||
    cd "$PROJDIR"
 | 
			
		||||
    exec "${args[@]}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
launcher="$MYTRUEDIR/$LAUNCHERPATH"
 | 
			
		||||
class="$MYTRUEDIR${WRAPPEDPATH:+/$WRAPPEDPATH}/${MYNAME%.php}.phpc"
 | 
			
		||||
script="$MYTRUEDIR${WRAPPEDPATH:+/$WRAPPEDPATH}/${MYNAME%.php}.php"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user