supprimer rundk
This commit is contained in:
parent
2e6c8219df
commit
3bbcdd1f8b
|
@ -1,31 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build -a @adminer
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,40 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/instantclient AS instantclient
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=instantclient /src/ /src/
|
||||
RUN /g/build _instantclient_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build -a @adminer
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=builder /opt/oracle/ /opt/oracle/
|
||||
RUN /g/build instantclient
|
||||
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,19 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/mariadb AS mariadb
|
||||
FROM $REGISTRY/src/legacytools AS legacytools
|
||||
|
||||
FROM mariadb:10
|
||||
ARG APT_PROXY TIMEZONE
|
||||
ENV APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=mariadb /g/ /g/
|
||||
RUN /g/build -a @base @mariadb
|
||||
|
||||
COPY --from=legacytools /g/ /g/
|
||||
RUN /g/build nutools servertools
|
||||
|
||||
EXPOSE 3306
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,31 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build -a @apache-php-cas php-utils
|
||||
|
||||
EXPOSE 80 443
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,44 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/legacytools AS legacytools
|
||||
FROM $REGISTRY/src/instantclient AS instantclient
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=instantclient /src/ /src/
|
||||
RUN /g/build _instantclient_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=legacytools /g/ /g/
|
||||
RUN /g/build nutools
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build -a @apache-php-cas php-utils
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=builder /opt/oracle/ /opt/oracle/
|
||||
RUN /g/build instantclient
|
||||
|
||||
EXPOSE 80 443
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,30 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build @php-cli php-utils
|
||||
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,43 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/legacytools AS legacytools
|
||||
FROM $REGISTRY/src/instantclient AS instantclient
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=instantclient /src/ /src/
|
||||
RUN /g/build _instantclient_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=legacytools /g/ /g/
|
||||
RUN /g/build nutools
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build @php-cli php-utils
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=builder /opt/oracle/ /opt/oracle/
|
||||
RUN /g/build instantclient
|
||||
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,16 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/postgres AS postgres
|
||||
|
||||
FROM postgres:15-bookworm
|
||||
ARG APT_PROXY TIMEZONE
|
||||
ENV APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=postgres /g/ /g/
|
||||
RUN /g/build -a @base @postgres
|
||||
RUN /g/pkg i @ssl @git
|
||||
|
||||
EXPOSE 5432
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,30 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build @php-cli php-utils
|
||||
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
|
@ -1,43 +0,0 @@
|
|||
# -*- coding: utf-8 mode: dockerfile -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
ARG NDIST=12
|
||||
ARG REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
FROM $REGISTRY/src/base AS base
|
||||
FROM $REGISTRY/src/legacytools AS legacytools
|
||||
FROM $REGISTRY/src/instantclient AS instantclient
|
||||
FROM $REGISTRY/src/php AS php
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim AS builder
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=base /src/ /src/
|
||||
RUN /g/build core lite _builder
|
||||
RUN /g/build _su-exec_builder
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=instantclient /src/ /src/
|
||||
RUN /g/build _instantclient_builder
|
||||
|
||||
################################################################################
|
||||
FROM debian:${NDIST}-slim
|
||||
ARG APT_MIRROR SEC_MIRROR APT_PROXY TIMEZONE
|
||||
ENV APT_MIRROR=$APT_MIRROR SEC_MIRROR=$SEC_MIRROR APT_PROXY=$APT_PROXY TIMEZONE=$TIMEZONE
|
||||
|
||||
COPY --from=base /g/ /g/
|
||||
COPY --from=builder /src/su-exec/su-exec /g/
|
||||
RUN /g/build
|
||||
|
||||
COPY --from=legacytools /g/ /g/
|
||||
RUN /g/build nutools
|
||||
|
||||
COPY --from=php /g/ /g/
|
||||
RUN /g/build @php-cli php-utils
|
||||
|
||||
COPY --from=instantclient /g/ /g/
|
||||
COPY --from=builder /opt/oracle/ /opt/oracle/
|
||||
RUN /g/build instantclient
|
||||
|
||||
ENTRYPOINT ["/g/entrypoint"]
|
179
support/build
179
support/build
|
@ -1,179 +0,0 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
MYDIR="$(cd "$(dirname -- "$0")"; pwd)"
|
||||
"$MYDIR/rundk" --bs --ue --ci || exit 1
|
||||
PROJDIR=; COMPOSERDIR=; COMPOSERPHAR=; VENDORDIR=; BUILDENV0=; BUILDENV=
|
||||
BUILD_IMAGES=(php-apache mariadb10); export BUILD_FLAVOUR=; DIST=; IMAGENAME=
|
||||
source "$MYDIR/rundk" || exit 1
|
||||
source "$PROJDIR/$VENDORDIR/nulib/php/load.sh" || exit 1
|
||||
require: template
|
||||
|
||||
BUILD_ARGS=(
|
||||
DIST NDIST
|
||||
REGISTRY
|
||||
APT_PROXY
|
||||
APT_MIRROR
|
||||
SEC_MIRROR
|
||||
TIMEZONE
|
||||
)
|
||||
|
||||
function dklsnet() {
|
||||
docker network ls --no-trunc --format '{{.Name}}' -f name="$1" 2>/dev/null
|
||||
}
|
||||
|
||||
function dklsimg() {
|
||||
local image="$1" version="$2"
|
||||
docker image ls --no-trunc --format '{{.Repository}}:{{.Tag}}' "$image${version:+:$version}" 2>/dev/null
|
||||
}
|
||||
|
||||
function dklsct() {
|
||||
# afficher le container dont l'image correspondante est $1
|
||||
docker ps --no-trunc --format '{{.Image}} {{.Names}}' | awk -v image="$1" '$1 == image { print $2 }'
|
||||
}
|
||||
|
||||
function dkrunning() {
|
||||
# vérifier si le container d'image $1 tourne
|
||||
[ -n "$(dklsct "$@")" ]
|
||||
}
|
||||
|
||||
function dclsct() {
|
||||
# afficher les containers correspondant à $1(=docker-compose.yml)
|
||||
docker compose ${1:+-f "$1"} ps -q
|
||||
}
|
||||
|
||||
function dcrunning() {
|
||||
# vérifier si les containers correspondant à $1(=docker-compose.yml) tournent
|
||||
# si $2 est spécifié, c'est le nombre de service qui doit tourner
|
||||
if [ -n "$2" ]; then
|
||||
[ "$(dclsct "${@:1:1}" | wc -l)" -eq "$2" ]
|
||||
else
|
||||
[ -n "$(dclsct "${@:1:1}")" ]
|
||||
fi
|
||||
}
|
||||
|
||||
function build_check_env() {
|
||||
eval "$(template_locals)"
|
||||
|
||||
template_copy_missing "$PROJDIR/$BUILDENV0" && updated=1
|
||||
template_process_userfiles
|
||||
|
||||
if [ -n "$updated" ]; then
|
||||
enote "IMPORTANT: Veuillez faire le paramétrage en éditant le fichier $BUILDENV
|
||||
${EDITOR:-nano} $BUILDENV
|
||||
ENSUITE, vous pourrez relancer la commande"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function _build() {
|
||||
local dockerfile image="${PRIVAREG:+$PRIVAREG/}${IMAGENAME%/*}/$1"
|
||||
if [ -n "$ForceBuild" -o -z "$(dklsimg "$image")" ]; then
|
||||
estep "Construction de $image"
|
||||
dockerfiles=(
|
||||
"$MYDIR/Dockerfile.$1.local"
|
||||
"$MYDIR/Dockerfile.$1$BUILD_FLAVOUR"
|
||||
"$PROJDIR/$VENDORDIR/nulib/php/support/Dockerfile.$1$BUILD_FLAVOUR"
|
||||
"$MYDIR/Dockerfile.$1"
|
||||
"$PROJDIR/$VENDORDIR/nulib/php/support/Dockerfile.$1"
|
||||
)
|
||||
for dockerfile in "${dockerfiles[@]}"; do
|
||||
[ -f "$dockerfile" ] && break
|
||||
done
|
||||
args=(
|
||||
-f "$dockerfile"
|
||||
${Pull:+--pull}
|
||||
${NoCache:+--no-cache}
|
||||
${PlainOutput:+--progress plain}
|
||||
-t "$image"
|
||||
)
|
||||
for arg in "${BUILD_ARGS[@]}"; do
|
||||
args+=(--build-arg "$arg=${!arg}")
|
||||
done
|
||||
for arg in "${!PROXY_VARS[@]}"; do
|
||||
args+=(--build-arg "$arg=${PROXY_VARS[$arg]}")
|
||||
done
|
||||
for host in "${HOST_MAPPINGS[@]}"; do
|
||||
args+=(--add-host "$host")
|
||||
done
|
||||
docker build "${args[@]}" "$PROJDIR" || die
|
||||
if [ -n "$Push" ]; then
|
||||
if [ -n "$PRIVAREG" ]; then
|
||||
estep "Poussement de $image"
|
||||
docker push "$image" || die
|
||||
else
|
||||
ewarn "PRIVAREG non défini: impossible de pousser l'image"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
function build_images() {
|
||||
local image sourced
|
||||
|
||||
[ $# -gt 0 ] || set -- rundk "${BUILD_IMAGES[@]}"
|
||||
for image in "$@"; do
|
||||
case "$image" in
|
||||
rundk)
|
||||
[ ${#Configs[*]} -gt 0 ] && export RUNDK_FORCE_BUILDENVS="${Configs[*]}"
|
||||
local -a args=(--bootstrap)
|
||||
[ "$ForceBuild" != all ] && args+=(--unless-exists)
|
||||
[ -n "$Pull" ] && args+=(--pull)
|
||||
[ -n "$NoCache" ] && args+=(--no-cache)
|
||||
"$MYDIR/rundk" "${args[@]}" || die
|
||||
;;
|
||||
*)
|
||||
if [ -z "$sourced" ]; then
|
||||
[ ${#Configs[*]} -gt 0 ] || Configs=("$PROJDIR/$BUILDENV")
|
||||
for config in "${Configs[@]}"; do
|
||||
source "$config"
|
||||
done
|
||||
after_source_buildenv
|
||||
read -a HOST_MAPPINGS <<<"${HOST_MAPPINGS//
|
||||
/ }"
|
||||
sourced=1
|
||||
fi
|
||||
_build "$image"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
action=build
|
||||
Configs=()
|
||||
ForceBuild=
|
||||
Pull=
|
||||
NoCache=
|
||||
PlainOutput=
|
||||
Push=
|
||||
args=(
|
||||
"Construire les images pour le projet"
|
||||
#"usage"
|
||||
--check-only action=none "++Ne faire que la vérification de l'environnement"
|
||||
-c:,--config:BUILDENV Configs "Spécifier un fichier d'environnement pour le build"
|
||||
-r,--rebuild ForceBuild=1 "Forcer la (re)construction des images"
|
||||
-R,--rebuild-all ForceBuild=all "++Comme --rebuild, mais reconstruire aussi rundk"
|
||||
-U,--pull Pull=1 "++Forcer le re-téléchargement des images dépendantes"
|
||||
-j,--no-cache NoCache=1 "++Construire l'image en invalidant le cache"
|
||||
-D,--plain-output PlainOutput=1 "++Afficher le détail du build"
|
||||
-p,--push Push=1 "Pousser les images vers le registry après construction"
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
if [ ${#Configs[*]} -gt 0 ]; then
|
||||
aconfigs=()
|
||||
for config in "${Configs[@]}"; do
|
||||
setx config=abspath "$config"
|
||||
aconfigs+=("$config")
|
||||
done
|
||||
Configs=("${aconfigs[@]}")
|
||||
# pas de vérification d'environnement si on spécifie Configs
|
||||
# ne pas oublier d'implémenter un traitement spécifique si build_check_env()
|
||||
# contient d'autres vérifications
|
||||
else
|
||||
build_check_env || die
|
||||
fi
|
||||
[ "$action" == none ] && exit 0
|
||||
|
||||
case "$action" in
|
||||
build) build_images "$@";;
|
||||
*) die "$action: action non implémentée";;
|
||||
esac
|
|
@ -1,19 +0,0 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
# Source des paquets et proxy
|
||||
APT_PROXY=
|
||||
APT_MIRROR=default
|
||||
SEC_MIRROR=default
|
||||
|
||||
# Timezone du serveur
|
||||
TIMEZONE=Europe/Paris
|
||||
|
||||
# registre docker privé d'après lequel sont nommées les images
|
||||
PRIVAREG=
|
||||
|
||||
################################################################################
|
||||
# Ne pas toucher à partir d'ici
|
||||
|
||||
REGISTRY=pubdocker.univ-reunion.fr
|
||||
DIST=d12
|
||||
IMAGENAME=nulib/rundk
|
|
@ -1,28 +0,0 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
default_profile "${DKBUILD_PROFILE:-prod}"
|
||||
|
||||
# Source des paquets et proxy
|
||||
setenv APT_PROXY=
|
||||
setenv APT_MIRROR=default
|
||||
setenv SEC_MIRROR=default
|
||||
|
||||
# Timezone du serveur
|
||||
setenv TIMEZONE=Europe/Paris
|
||||
|
||||
if profile prod test; then
|
||||
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||
setenv PRIVAREG=pridocker.univ-reunion.fr
|
||||
host_mappings=(
|
||||
pridocker.univ-reunion.fr:10.85.1.56
|
||||
pubdocker.univ-reunion.fr:10.85.1.57
|
||||
repos.univ-reunion.fr:10.85.1.57
|
||||
git.univ-reunion.fr:10.85.1.55
|
||||
)
|
||||
default docker host-mappings="${host_mappings[*]}"
|
||||
elif profile devel; then
|
||||
setenv REGISTRY=docker.devel.self
|
||||
setenv PRIVAREG=docker.devel.self
|
||||
else
|
||||
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||
setenv PRIVAREG=
|
||||
fi
|
|
@ -1,18 +0,0 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
# Script permettant de lancer une commande dans docker et/ou de bootstrapper
|
||||
# l'utilisation de nulib dans un projet
|
||||
# Les fichiers suivants doivent être copiés à un endroit quelconque du projet:
|
||||
# - rundk (ce script, à générer avec update-rundk.sh)
|
||||
# - Dockerfile.rundk
|
||||
# Les fichiers suivants peuvent être intégrés dans le projet comme exemples:
|
||||
# - dot-build.env.dist (à renommer en .build.env.dist)
|
||||
# - dot-dkbuild.env.dist (indiquer qu'il faut le copier en ~/.dkbuild.env)
|
||||
# Par défaut, ce script assume que rundk est copié dans le répertoire sbin/
|
||||
# du projet, et que le fichier composer.json et le répertoire vendor/ sont à la
|
||||
# racine du projet. Le cas échéant, modifier les valeurs ci-dessous
|
||||
(return 0 2>/dev/null) && _sourced=1 || _sourced=
|
||||
|
||||
###############################################################################
|
||||
# Modifier les valeurs suivantes si nécessaire
|
||||
#SOF:rundk.userconf:ne pas modifier cette ligne
|
|
@ -1,502 +0,0 @@
|
|||
#EOF:rundk.userconf:ne pas modifier cette ligne
|
||||
################################################################################
|
||||
|
||||
# Ne pas modifier à partir d'ici
|
||||
|
||||
if [ -n "$_sourced" ]; then
|
||||
if [ "${0#-}" != "$0" ]; then
|
||||
# sourcé depuis la ligne de commande
|
||||
MYSELF="${BASH_SOURCE[1]}"
|
||||
else
|
||||
# sourcé depuis un script
|
||||
MYSELF="${BASH_SOURCE[0]}"
|
||||
fi
|
||||
MYDIR="$(cd "$(dirname -- "$MYSELF")"; pwd)"
|
||||
MYNAME="$(basename -- "$MYSELF")"
|
||||
else
|
||||
MYDIR="$(cd "$(dirname -- "$0")"; pwd)"
|
||||
MYNAME="$(basename -- "$0")"
|
||||
fi
|
||||
if [ -f "$MYDIR/rundk.userconf.local" ]; then
|
||||
source "$MYDIR/rundk.userconf.local"
|
||||
fi
|
||||
|
||||
[ -n "$PROJDIR" ] || PROJDIR="$(dirname -- "$MYDIR")"
|
||||
[ "${PROJDIR#/}" != "$PROJDIR" ] || PROJDIR="$(cd "$MYDIR/$PROJDIR"; pwd)"
|
||||
|
||||
[ -n "$COMPOSERDIR" ] || COMPOSERDIR=.
|
||||
[ -n "$COMPOSERPHAR" ] || COMPOSERPHAR=sbin/composer.phar
|
||||
[ -n "$VENDORDIR" ] || VENDORDIR=vendor
|
||||
[ -n "$BUILDENV0" ] || BUILDENV0=.build.env.dist
|
||||
[ -n "$BUILDENV" ] || BUILDENV=build.env
|
||||
[ -n "$DIST" ] || DIST=d12
|
||||
[ -n "$IMAGENAME" ] || IMAGENAME=nulib/rundk
|
||||
|
||||
[ "$COMPOSERPHAR" == none ] && COMPOSERPHAR=
|
||||
[ "$BUILDENV0" == none ] && BUILDENV0=
|
||||
[ "$BUILDENV" == none ] && BUILDENV=
|
||||
|
||||
function after_source_buildenv() {
|
||||
NDIST="${DIST#d}"
|
||||
}
|
||||
after_source_buildenv
|
||||
|
||||
[ -n "$_sourced" ] && return 0
|
||||
|
||||
function eecho() { echo "$*" 1>&2; }
|
||||
function eerror() { eecho "ERROR: $*"; }
|
||||
function die() { [ $# -gt 0 ] && eerror "$*"; exit 1; }
|
||||
function is_defined() { [ -n "$(declare -p "$1" 2>/dev/null)" ]; }
|
||||
function in_path() { [ -n "$1" -a -x "$(which "$1" 2>/dev/null)" ]; }
|
||||
function composer() {
|
||||
cd "$PROJDIR/$COMPOSERDIR" || exit 1
|
||||
if [ -x "$PROJDIR/$COMPOSERPHAR" ]; then
|
||||
"$PROJDIR/$COMPOSERPHAR" "$@"
|
||||
elif in_path composer; then
|
||||
command composer "$@"
|
||||
elif [ -x /usr/bin/composer ]; then
|
||||
/usr/bin/composer "$@"
|
||||
elif [ -x /usr/local/bin/composer ]; then
|
||||
/usr/local/bin/composer "$@"
|
||||
else
|
||||
die "impossible de trouver composer"
|
||||
fi
|
||||
if [ -f composer.lock ]; then
|
||||
cp composer.lock "$PROJDIR/.composer.lock.rundk"
|
||||
fi
|
||||
}
|
||||
|
||||
bootstrap=
|
||||
BootstrapOnly=1
|
||||
ComposerInstall=
|
||||
ForcedBootstrap=
|
||||
parse_opts=1
|
||||
args=()
|
||||
for arg in "$@"; do
|
||||
if [ -z "$parse_opts" ]; then
|
||||
args+=("$arg")
|
||||
elif [ "$arg" == --bootstrap -o "$arg" == --bs ]; then
|
||||
bootstrap=1
|
||||
elif [ "$arg" == --exec ]; then
|
||||
BootstrapOnly=
|
||||
elif [ "$arg" == --composer-install -o "$arg" == --ci ]; then
|
||||
ComposerInstall=1
|
||||
elif [[ "$arg" == -* ]]; then
|
||||
args+=("$arg")
|
||||
else
|
||||
args+=("$arg")
|
||||
parse_opts=
|
||||
fi
|
||||
done
|
||||
set -- "${args[@]}"
|
||||
|
||||
if [ -z "$bootstrap" ]; then
|
||||
# si vendor/ n'existe pas, alors on doit faire bootstrap
|
||||
if [ ! -f "$PROJDIR/$VENDORDIR/nulib/php/load.sh" ]; then
|
||||
ForcedBootstrap=1
|
||||
elif [ ! -f "$PROJDIR/.composer.lock.rundk" ]; then
|
||||
ForcedBootstrap=1
|
||||
elif ! diff -q "$PROJDIR/$COMPOSERDIR/composer.lock" "$PROJDIR/.composer.lock.rundk" >&/dev/null; then
|
||||
ForcedBootstrap=1
|
||||
elif [ -n "$bootstrap" -a -n "$BootstrapOnly" ]; then
|
||||
# bootstrap inutile
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$ForcedBootstrap" ]; then
|
||||
[ -z "$_RUNDK_IN_DOCKER" ] && eecho "== rundk is needed: bootstrapping"
|
||||
bootstrap=1
|
||||
BootstrapOnly=
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$_RUNDK_IN_DOCKER" ]; then
|
||||
############################################################################
|
||||
# Lancement depuis l'extérieur du container
|
||||
|
||||
# recenser les valeur de proxy
|
||||
declare -A PROXY_VARS
|
||||
for var in {HTTPS,ALL,NO}_PROXY {http,https,all,no}_proxy; do
|
||||
is_defined "$var" && PROXY_VARS[${var,,}]="${!var}"
|
||||
done
|
||||
|
||||
## Charger ~/.dkbuild.env
|
||||
|
||||
APT_PROXY=
|
||||
APT_MIRROR=
|
||||
SEC_MIRROR=
|
||||
TIMEZONE=
|
||||
PRIVAREG=
|
||||
REGISTRY=
|
||||
PROFILE=
|
||||
HOST_MAPPINGS=()
|
||||
function default_profile() {
|
||||
PROFILE="$1"
|
||||
}
|
||||
function profile() {
|
||||
local profile
|
||||
for profile in "$@"; do
|
||||
[ "$profile" == "$PROFILE" ] && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
function setenv() {
|
||||
eval "export $1"
|
||||
}
|
||||
function default() {
|
||||
local command="$1"; shift
|
||||
local nv n v
|
||||
case "$command" in
|
||||
docker)
|
||||
for nv in "$@"; do
|
||||
[[ "$nv" == *=* ]] || continue
|
||||
n="${nv%%=*}"
|
||||
v="${nv#*=}"
|
||||
case "$n" in
|
||||
host-mappings)
|
||||
read -a ns <<<"$v"
|
||||
for v in "${ns[@]}"; do
|
||||
HOST_MAPPINGS+=("$v")
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[ -f ~/.dkbuild.env ] && source ~/.dkbuild.env
|
||||
|
||||
[ -n "$APT_PROXY" ] || APT_PROXY=
|
||||
[ -n "$APT_MIRROR" ] || APT_MIRROR=default
|
||||
[ -n "$SEC_MIRROR" ] || SEC_MIRROR=default
|
||||
[ -n "$TIMEZONE" ] || TIMEZONE=Europe/Paris
|
||||
[ -n "$PRIVAREG" ] || PRIVAREG=
|
||||
[ -n "$REGISTRY" ] || REGISTRY=pubdocker.univ-reunion.fr
|
||||
|
||||
## Construire l'image
|
||||
|
||||
if [ -n "$RUNDK_NO_USE_RSLAVE" ]; then
|
||||
UseRslave=
|
||||
elif [ -n "$RUNDK_USE_RSLAVE" ]; then
|
||||
UseRslave=1
|
||||
elif [ -e /proc/sys/fs/binfmt_misc/WSLInterop ]; then
|
||||
# pas de mount propagation sous WSL
|
||||
UseRslave=
|
||||
else
|
||||
UseRslave=1
|
||||
fi
|
||||
|
||||
IMAGE=
|
||||
if [ -z "$bootstrap" ]; then
|
||||
if [ -n "$RUNDK_FORCE_BUILDENVS" ]; then
|
||||
eval "Configs=($RUNDK_FORCE_BUILDENVS)"
|
||||
for config in "${Configs[@]}"; do
|
||||
source "$config" || exit 1
|
||||
done
|
||||
after_source_buildenv
|
||||
elif [ -n "$BUILDENV" -a -f "$PROJDIR/$BUILDENV" ]; then
|
||||
source "$PROJDIR/$BUILDENV" || exit 1
|
||||
after_source_buildenv
|
||||
elif [ -n "$BUILDENV0" -a -f "$PROJDIR/$BUILDENV0" ]; then
|
||||
source "$PROJDIR/$BUILDENV0" || exit 1
|
||||
after_source_buildenv
|
||||
fi
|
||||
if [ -z "$IMAGE" ]; then
|
||||
[ -n "$PRIVAREG" ] && IMAGE="$PRIVAREG/$IMAGENAME:$DIST" || IMAGE="$REGISTRY/$IMAGENAME:$DIST"
|
||||
fi
|
||||
if [ -z "$(docker image ls --no-trunc --format '{{.Repository}}:{{.Tag}}' "$IMAGE" 2>/dev/null)" ]; then
|
||||
bootstrap=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$bootstrap" ]; then
|
||||
BUILD_ARGS=(
|
||||
DIST NDIST
|
||||
REGISTRY
|
||||
APT_PROXY
|
||||
APT_MIRROR
|
||||
SEC_MIRROR
|
||||
TIMEZONE
|
||||
)
|
||||
|
||||
SOPTS=+d:9876543210:c:UjDx:z:r:pw:v
|
||||
LOPTS=help,dist:,d19,d18,d17,d16,d15,d14,d13,d12,d11,d10,config:,ue,unless-exists,pull,nc,no-cache,po,plain-output,apt-proxy:,timezone:,privareg:,push,chdir:,verbose,no-use-rslave
|
||||
args="$(getopt -n "$MYNAME" -o "$SOPTS" -l "$LOPTS" -- "$@")" || exit 1; eval "set -- $args"
|
||||
|
||||
Dist=
|
||||
if [ -n "$RUNDK_FORCE_BUILDENVS" ]; then
|
||||
eval "Configs=($RUNDK_FORCE_BUILDENVS)"
|
||||
elif [ -n "$BUILDENV" -a -f "$PROJDIR/$BUILDENV" ]; then
|
||||
Configs=("$PROJDIR/$BUILDENV")
|
||||
elif [ -n "$BUILDENV0" -a -f "$PROJDIR/$BUILDENV0" ]; then
|
||||
Configs=("$PROJDIR/$BUILDENV0")
|
||||
else
|
||||
Configs=()
|
||||
fi
|
||||
UnlessExists=
|
||||
Pull=
|
||||
NoCache=
|
||||
PlainOutput=
|
||||
Chdir=
|
||||
Verbose=
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--) shift; break;;
|
||||
--help)
|
||||
eecho "\
|
||||
rundk: construire l'image docker
|
||||
|
||||
USAGE
|
||||
$MYNAME --bootstrap [options...] [--exec command [args...]]
|
||||
|
||||
OPTIONS
|
||||
-c, --config build.env
|
||||
--unless-exists
|
||||
-U, --pull
|
||||
-j, --no-cache
|
||||
-D, --plain-output
|
||||
-x, --apt-proxy APT_PROXY
|
||||
-z, --timezone TIMEZONE
|
||||
-r, --privareg PRIVAREG
|
||||
-p, --push
|
||||
paramètres pour la consruction de l'image
|
||||
-w, --chdir CHDIR
|
||||
aller dans le répertoire spécifié avant de lancer la commande
|
||||
-v, --verbose
|
||||
afficher plus d'informations"
|
||||
exit 0
|
||||
;;
|
||||
-d|--dist) shift; Dist="$1";;
|
||||
-[0-9]) Dist="d1${1#-}";;
|
||||
--d*) Dist="${1#--}";;
|
||||
-c|--config) shift; Configs+="$1";;
|
||||
--ue|--unless-exists) UnlessExists=1;;
|
||||
-U|--pull) Pull=1;;
|
||||
-j|--nc|--no-cache) NoCache=1;;
|
||||
-D|--po|--plain-output) PlainOutput=1;;
|
||||
-x|--apt-proxy) shift; APT_PROXY="$1";;
|
||||
-z|--timezone) shift; TIMEZONE="$1";;
|
||||
-r|--privareg) shift; PRIVAREG="$1";;
|
||||
-p|--push) Push=1;;
|
||||
-w|--chdir) shift; Chdir="$1";;
|
||||
-v|--verbose) Verbose=1;;
|
||||
--no-use-rslave) UseRslave=;;
|
||||
*) die "$1: option non configurée";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
for config in "${Configs[@]}"; do
|
||||
if [ "$config" == none ]; then
|
||||
Configs=()
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ${#Configs[*]} -gt 0 ]; then
|
||||
for config in "${Configs[@]}"; do
|
||||
source "$config" || exit 1
|
||||
done
|
||||
after_source_buildenv
|
||||
fi
|
||||
[ -n "$Dist" ] && DIST="$Dist"
|
||||
if [ -z "$IMAGE" ]; then
|
||||
[ -n "$PRIVAREG" ] && IMAGE="$PRIVAREG/$IMAGENAME:$DIST" || IMAGE="$REGISTRY/$IMAGENAME:$DIST"
|
||||
fi
|
||||
if [ -z "$UnlessExists" -o -z "$(docker image ls --no-trunc --format '{{.Repository}}:{{.Tag}}' "$IMAGE" 2>/dev/null)" ]; then
|
||||
eecho "== Building $IMAGE"
|
||||
dockerfiles=(
|
||||
"$MYDIR/Dockerfile.rundk.local"
|
||||
"$MYDIR/Dockerfile.rundk$BUILD_FLAVOUR"
|
||||
"$MYDIR/Dockerfile.rundk"
|
||||
)
|
||||
for dockerfile in "${dockerfiles[@]}"; do
|
||||
[ -f "$dockerfile" ] && break
|
||||
done
|
||||
args=(
|
||||
-f "$dockerfile"
|
||||
${Pull:+--pull}
|
||||
${NoCache:+--no-cache}
|
||||
${BuildPlain:+--progress plain}
|
||||
-t "$IMAGE"
|
||||
)
|
||||
for arg in "${BUILD_ARGS[@]}"; do
|
||||
args+=(--build-arg "$arg=${!arg}")
|
||||
done
|
||||
for arg in "${!PROXY_VARS[@]}"; do
|
||||
args+=(--build-arg "$arg=${PROXY_VARS[$arg]}")
|
||||
done
|
||||
for host in "${HOST_MAPPINGS[@]}"; do
|
||||
args+=(--add-host "$host")
|
||||
done
|
||||
mkdir -p /tmp/rundk-build
|
||||
docker build "${args[@]}" /tmp/rundk-build || exit 1
|
||||
|
||||
if [ -n "$Push" -a -n "$PRIVAREG" ]; then
|
||||
eecho "== Pushing $IMAGE"
|
||||
docker push "$IMAGE" || exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$ComposerInstall" -a ! -f "$PROJDIR/$VENDORDIR/nulib/php/load.sh" ]; then
|
||||
BootstrapOnly=
|
||||
ForcedBootstrap=1
|
||||
fi
|
||||
[ -n "$BootstrapOnly" ] && exit 0
|
||||
|
||||
else
|
||||
SOPTS=+w:v
|
||||
LOPTS=help,chdir:,verbose,no-use-rslave
|
||||
args="$(getopt -n "$MYNAME" -o "$SOPTS" -l "$LOPTS" -- "$@")" || exit 1; eval "set -- $args"
|
||||
|
||||
Chdir=
|
||||
Verbose=
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--) shift; break;;
|
||||
--help)
|
||||
eecho "\
|
||||
rundk: construire l'image docker
|
||||
|
||||
USAGE
|
||||
$MYNAME ci|cu|composer
|
||||
$MYNAME --exec [options...] command [args...]
|
||||
|
||||
COMMANDES COMPOSER
|
||||
ci
|
||||
cu
|
||||
installer/mettre à jour les dépendances du projet avec composer
|
||||
composer (args...]
|
||||
lancer composer avec les arguments spécifiés.
|
||||
|
||||
pour les commandes ci-dessus, l'option --chdir est ignorée: le répertoire
|
||||
courant est forcé au répertoire du projet composer
|
||||
|
||||
OPTIONS
|
||||
-w, --chdir CHDIR
|
||||
aller dans le répertoire spécifié avant de lancer la commande
|
||||
-v, --verbose
|
||||
afficher plus d'informations"
|
||||
exit 0
|
||||
;;
|
||||
-w|--chdir) shift; Chdir="$1";;
|
||||
-v|--verbose) Verbose=1;;
|
||||
--no-use-rslave) UseRslave=;;
|
||||
*) die "$1: option non configurée";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -n "$ComposerInstall" -a ! -f "$PROJDIR/$VENDORDIR/nulib/php/load.sh" ]; then
|
||||
ForcedBootstrap=1
|
||||
fi
|
||||
fi
|
||||
|
||||
## Lancer la commande
|
||||
|
||||
uid="$(id -u)"
|
||||
gid="$(id -g)"
|
||||
args=(
|
||||
run -it --rm
|
||||
--name "rundk-$(basename -- "$1")-$$"
|
||||
-e _RUNDK_IN_DOCKER=1
|
||||
-e _RUNDK_UID="$uid"
|
||||
-e _RUNDK_GID="$gid"
|
||||
)
|
||||
for arg in "${!PROXY_VARS[@]}"; do
|
||||
args+=(--e "$arg=${PROXY_VARS[$arg]}")
|
||||
done
|
||||
for host in "${HOST_MAPPINGS[@]}"; do
|
||||
args+=(--add-host "$host")
|
||||
done
|
||||
|
||||
# monter le répertoire qui contient $PROJDIR
|
||||
mount_composer=
|
||||
if [ "${PROJDIR#$HOME/}" != "$PROJDIR" -o "$PROJDIR" == "$HOME" ]; then
|
||||
# bind mount $HOME
|
||||
args+=(-v "$HOME:$HOME${UseRslave:+:rslave}")
|
||||
else
|
||||
# bind mount uniquement le répertoire du projet
|
||||
args+=(-v "$PROJDIR:$PROJDIR${UseRslave:+:rslave}")
|
||||
mount_composer=1
|
||||
fi
|
||||
if [ -n "$mount_composer" -a -d "$HOME/.composer" ]; then
|
||||
# monter la configuration de composer
|
||||
args+=(-v "$HOME/.composer:$HOME/.composer")
|
||||
fi
|
||||
args+=(-w "$(pwd)")
|
||||
|
||||
# lancer avec l'utilisateur courant
|
||||
if [ $uid -ne 0 ]; then
|
||||
# si c'est un utilisateur lambda, il faut monter les informations
|
||||
# nécessaires. composer est déjà monté via $HOME
|
||||
user="$(id -un)"
|
||||
userent="$(getent passwd "$user")"
|
||||
group="$(id -gn)"
|
||||
groupent="$(getent group "$group")"
|
||||
args+=(
|
||||
-e _RUNDK_USER="$user"
|
||||
-e _RUNDK_USERENT="$userent"
|
||||
-e _RUNDK_GROUPENT="$groupent"
|
||||
)
|
||||
fi
|
||||
|
||||
args+=(
|
||||
"$IMAGE"
|
||||
exec "$0" ${Chdir:+-w "$Chdir"}
|
||||
)
|
||||
[ -n "$ForcedBootstrap" ] && set -- ci
|
||||
[ -n "$Verbose" ] && eecho "\$ docker ${args[*]} $*"
|
||||
exec docker "${args[@]}" "$@"
|
||||
|
||||
else
|
||||
############################################################################
|
||||
# Lancement depuis l'intérieur du container
|
||||
|
||||
# Ajouter les informations utilisateur le cas échéant
|
||||
if [ -n "$_RUNDK_USERENT" ]; then
|
||||
grep -q "^$_RUNDK_USER:" /etc/passwd || echo "$_RUNDK_USERENT" >>/etc/passwd
|
||||
fi
|
||||
if [ -n "$_RUNDK_GROUPENT" ]; then
|
||||
grep -q "^$_RUNDK_GROUP:" /etc/group || echo "$_RUNDK_GROUPENT" >>/etc/group
|
||||
fi
|
||||
if [ -n "$_RUNDK_USER" ]; then
|
||||
user="$_RUNDK_USER"
|
||||
export _RUNDK_USER=
|
||||
export _RUNDK_USERENT=
|
||||
export _RUNDK_GROUPENT=
|
||||
if in_path su-exec; then
|
||||
exec su-exec "$user" "$0" "$@"
|
||||
else
|
||||
exec runuser -u "$user" -- "$0" "$@"
|
||||
fi
|
||||
fi
|
||||
|
||||
SOPTS=+w:
|
||||
LOPTS=chdir:
|
||||
args="$(getopt -n "$MYNAME" -o "$SOPTS" -l "$LOPTS" -- "$@")" || exit 1; eval "set -- $args"
|
||||
|
||||
chdir=
|
||||
action=
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--) shift; break;;
|
||||
-w|--chdir) shift; chdir="$1";;
|
||||
*) die "$1: option non configurée";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$1" == ci ]; then
|
||||
eecho "== installing composer dependencies"
|
||||
composer i
|
||||
elif [ "$1" == cu ]; then
|
||||
eecho "== upgrading composer dependencies"
|
||||
composer u
|
||||
elif [ "$1" == composer ]; then
|
||||
"$@"
|
||||
else
|
||||
if [ -n "$chdir" ]; then
|
||||
cd "$chdir" || exit 1
|
||||
fi
|
||||
exec "${@:-bash}"
|
||||
fi
|
||||
fi
|
|
@ -1,29 +0,0 @@
|
|||
# répertoire du projet. ce chemin doit être absolu. s'il est relatif, il est
|
||||
# exprimé par rapport au répertoire de ce script
|
||||
PROJDIR=
|
||||
|
||||
# composer: répertoire du projet composer (celui qui contient le fichier
|
||||
# composer.json), chemin de composer.phar et répertoire vendor. ces chemions
|
||||
# doivent être relatifs à $PROJDIR
|
||||
COMPOSERDIR=
|
||||
COMPOSERPHAR=
|
||||
VENDORDIR=
|
||||
|
||||
# fichier de configuration pour le build
|
||||
BUILDENV0=
|
||||
BUILDENV=
|
||||
|
||||
# Listes des images que le script build construit automatiquement
|
||||
BUILD_IMAGES=(php-apache mariadb10)
|
||||
BUILD_FLAVOUR=
|
||||
|
||||
## En ce qui concerne DIST et IMAGENAME, les valeurs dans BUILDENV prennent le
|
||||
## dessus. si BUILDENV *n'est pas* utilisé, ces valeur peuvent être spécifiées
|
||||
## ici
|
||||
|
||||
# version de debian à utiliser pour l'image
|
||||
# d12=php8.2, d11=php7.4, d10=php7.3
|
||||
DIST=
|
||||
|
||||
# Nom de base de l'image (sans le registry), e.g prefix/rundk
|
||||
IMAGENAME=
|
|
@ -1,22 +0,0 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
# Modèle de script utilisant rundk pour lancer un traitement dans un container
|
||||
# RUNDK est le chemin relatif vers rundk à partir du chemin du script
|
||||
RUNDK=sbin/rundk
|
||||
|
||||
MYDIR="$(dirname -- "$0")"; MYNAME="$(basename -- "$0")"
|
||||
if [ -z "$_RUNDK_IN_DOCKER" ]; then
|
||||
"$MYDIR/$RUNDK" --bs --ue --ci || exit 1
|
||||
exec "$MYDIR/$RUNDK" "$0" "$@"
|
||||
fi
|
||||
source "$MYDIR/$RUNDK" || exit 1
|
||||
source "$PROJDIR/$VENDORDIR/nulib/php/load.sh" || exit 1
|
||||
|
||||
args=(
|
||||
"description"
|
||||
#"usage"
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
echo "je tourne dans un container..."
|
||||
sleep 1000
|
|
@ -1,87 +0,0 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
source "$(dirname "$0")/../load.sh" || exit 1
|
||||
|
||||
projdir=
|
||||
args=(
|
||||
"Mettre à jour le script rundk"
|
||||
"[path/to/rundk]"
|
||||
-d:,--projdir:PROJDIR . "Copier les fichiers pour un projet de l'université de la Réunion"
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
if [ -n "$projdir" ]; then
|
||||
setx projdir=abspath "$projdir"
|
||||
set -- "$projdir/sbin/rundk"
|
||||
fi
|
||||
|
||||
rundk="${1:-.}"
|
||||
[ -d "$rundk" ] && rundk="$rundk/rundk"
|
||||
|
||||
setx rundir=dirname -- "$rundk"
|
||||
[ -d "$rundir" ] || mkdir -p "$rundir"
|
||||
|
||||
if [ -f "$rundk" ]; then
|
||||
ac_set_tmpfile userconf
|
||||
<"$rundk" awk '
|
||||
# extraire la configuration depuis le fichier
|
||||
BEGIN { p = 0 }
|
||||
/SOF:rundk.userconf:/ { p = 1; next }
|
||||
/EOF:rundk.userconf:/ { p = 0; next }
|
||||
p == 1 { print }
|
||||
' | awk '
|
||||
# mettre en forme le fichier: pas de lignes vides avant et après
|
||||
BEGIN { p = 0; have_pending = 0; pending = "" }
|
||||
$0 != "" { p = 1 }
|
||||
p == 1 {
|
||||
if ($0 != "") {
|
||||
if (have_pending) print pending
|
||||
print
|
||||
have_pending = 0
|
||||
pending = ""
|
||||
} else {
|
||||
if (!have_pending) have_pending = 1
|
||||
else pending = pending "\n"
|
||||
}
|
||||
}
|
||||
' >"$userconf"
|
||||
initial_config=
|
||||
elif [ -n "$projdir" ]; then
|
||||
# forcer BUILDENV0=..env.dist et BUILDENV=.env pour les projets de
|
||||
# l'université de la Réunion
|
||||
initial_config=1
|
||||
ac_set_tmpfile userconf
|
||||
sed <"$MYDIR/rundk.userconf" >"$userconf" '
|
||||
/^BUILDENV0=/s/=.*/=..env.dist/
|
||||
/^BUILDENV=/s/=.*/=.env/
|
||||
'
|
||||
else
|
||||
initial_config=1
|
||||
userconf="$MYDIR/rundk.userconf"
|
||||
fi
|
||||
|
||||
(
|
||||
cat "$MYDIR/rundk.1preamble"
|
||||
echo
|
||||
cat "$userconf"
|
||||
echo
|
||||
cat "$MYDIR/rundk.2postamble"
|
||||
) >"$rundk"
|
||||
[ -x "$rundk" ] || chmod +x "$rundk"
|
||||
|
||||
rsync -lpt "$MYDIR/Dockerfile.rundk" "$rundir/"
|
||||
|
||||
if [ -n "$projdir" ]; then
|
||||
if testdiff "$rundir/build" "$MYDIR/build"; then
|
||||
cp "$MYDIR/build" "$rundir/build"
|
||||
chmod +x "$rundir/build"
|
||||
fi
|
||||
if [ ! -f "$projdir/..env.dist" ]; then
|
||||
sed <"$MYDIR/dot-build.env.dist" >"$projdir/..env.dist" '
|
||||
/^IMAGENAME=/s/=.*\//='"$(basename -- "$projdir")"'\//
|
||||
'
|
||||
initial_config=1
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -n "$initial_config" ]
|
Loading…
Reference in New Issue