dk: support build args avec la syntaxe NAME=VALUE

This commit is contained in:
Jephté Clain 2020-03-31 23:38:53 +04:00
parent f7b3f90ba0
commit aa269661cb
1 changed files with 50 additions and 24 deletions

74
dk
View File

@ -23,8 +23,8 @@ veut dire qu'elle n'aura pas la même sématique.
COMMANDES
get-profile
Afficher le profil courant
b|build [SERVICE]
Construire les images
b|build [NAME=VALUE...] [SERVICE]
Construire les images. Les variables NAME=VALUE sont des 'build args'
p|push
p|push [SERVICES...]
La première syntaxe est utilisable avec un projet docker. Elle permet de
@ -56,31 +56,31 @@ COMMANDES
x|exec SERVICE COMMAND
Lancer une commande dans le container correspondant au service spécifié,
qui doit être en fonctionnement
d|brd
d|brd [NAME=VALUE...]
Construire les images (comme avec build), démarrer les services et
suivre les logs de façon interactive (comme avec up). Dès que l'on
arrête l'affichage des logs avec Ctrl+C, arrêter les services et
supprimer l'environnement (comme avec down)
Vaguement équivalent à -- build -- start [args] -- logs
suivi de -- down
bs
bs [NAME=VALUE...]
Construire les images (comme avec build) puis démarrer les services
(comme avec start)
Equivalent à -- build -- start [args]
br SERVICE [COMMAND]
br [NAME=VALUE...] SERVICE [COMMAND]
Construire les images (comme avec build) puis démarrer le service avec
la commande spécifiée (comme avec run)
Equivalent à -- build -- run [args]
Equivalent à -- build [NAME=VALUE...] -- run [args]
y|deploy [args...]
(Re)déployer un stack. Cette commande ne fonctionne qu'en mode swarm.
Implique --stack
by|bd [args...]
Equivalent à --stack -- build -- deploy args...
by|bd [NAME=VALUE...] [args...]
Equivalent à --stack -- build [NAME=VALUE...] -- deploy args...
Utilisable notamment en développement
bp [args...]
Equivalent à --stack -- build -- push args...
bpy|bpd [args...]
Equivalent à --stack -- build -- push -- deploy args...
bp [NAME=VALUE...] [args...]
Equivalent à --stack -- build [NAME=VALUE...] -- push args...
bpy|bpd [NAME=VALUE...] [args...]
Equivalent à --stack -- build [NAME=VALUE...] -- push -- deploy args...
ser|service COMMAND SERVICE [args...]
Frontend pour 'docker service COMMAND args... SERVICE'
Cette commande ne fonctionne qu'en mode swarm. Il n'est pas nécessaire
@ -840,11 +840,11 @@ function default_update_build_env() {
[ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_version)"
[ -n "$VERSION" ] && TAGS+=("$VERSION")
# Variables en ligne de commande
for var in "${VARS[@]}"; do
for var in "${VARS[@]}" "$@"; do
docker_add_build_arg "${var%%=*}" "${var#*=}"
done
}
function update_build_env() { default_update_build_env; }
function update_build_env() { default_update_build_env "$@"; }
function default_compose_build() {
${FAKE:+qvals} docker-compose \
@ -873,24 +873,42 @@ function docker_build() {
[ -n "$BUILD_BUILD" ] || return 0
default_docker_build "$@"
}
function __parse_bargs() {
bargs=()
args=()
while [ $# -gt 0 ]; do
[[ "$1" == *=* ]] && bargs+=("$1") || args+=("$1")
shift
done
}
function auto_build() {
local -a replace_env_args env_args
local -a replace_build_args build_args
initialize_build_env
local -a args bargs; local barg
__parse_bargs "$@"
set -- "${args[@]}"
if [ -f docker-compose.yml ]; then
compose_set_env_args
update_build_env
update_build_env "${bargs[@]}"
build_update_apps || return 1
compose_build "$@"
elif [ -f Dockerfile ]; then
docker_parse_env_args
docker_check_name
docker_add_build_arg build_date "$(date +%y%m%d)"
update_build_env
update_build_env "${bargs[@]}"
build_update_apps || return 1
docker_build "$@"
else
${FAKE:+qvals} "$DOCKER" build ${NO_CACHE:+--no-cache} "$@"
for barg in "${bargs[@]}"; do
replace_build_args+=(--build-arg "$barg")
done
${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \
"${replace_build_args[@]}" "$@"
fi
}
@ -1078,7 +1096,7 @@ function compose_run() { default_compose_run "$@"; }
function docker_run() { default_docker_run "$@"; }
function auto_run() {
eval "$(utools_local parse_opts)"
local detach no_deps rm=1 service_ports use_aliases volume
local detach no_deps rm=1 service_ports use_aliases volume disable_tty
local -a envs labels
local var
for var in "${VARS[@]}"; do
@ -1096,6 +1114,7 @@ function auto_run() {
--service-ports service_ports=1
--use-aliases use_aliases=1
-v:,--volume: volume=
-T disable_tty=1
@ args -- "$@"
)
parse_opts "${args[@]}" && set -- "${args[@]}" || { eerror "$args"; return 1; }
@ -1114,6 +1133,7 @@ function auto_run() {
${service_ports:+--service-ports}
${use_aliases:+--use-aliases}
${volume:+-v "$volume"}
${disable_tty:+-T}
)
compose_run "$@"
elif [ -f Dockerfile ]; then
@ -1840,7 +1860,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
if auto_build; then
__parse_bargs "${args[@]}"
if auto_build "${bargs[@]}"; then
auto_up "${args[@]}" && auto_logs || die
else
do_auto_down=
@ -1856,7 +1877,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_up "${args[@]}"
__parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_up "${args[@]}" || die
;;
br)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1868,7 +1890,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_run "${args[@]}"
__parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_run "${args[@]}" || die
;;
y|deploy)
USE_STACK=1
@ -1889,7 +1912,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_deploy "${args[@]}"
__parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_deploy "${args[@]}" || die
;;
bp)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1900,7 +1924,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_push "${args[@]}"
__parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_push "${args[@]}" || die
;;
bpy|bpd)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1911,7 +1936,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_push && auto_deploy "${args[@]}"
__parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_push && auto_deploy "${args[@]}" || die
;;
ser|service)
args=()