From 3ecb127f33b833a830764257dbb151643dfec2d0 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 15 Mar 2023 16:15:44 +0400 Subject: [PATCH] support docker compose v2 --- cx-conndev | 9 +++++++-- cx-shelldev | 9 +++++++-- dk | 58 +++++++++++++++++++++++++++++++++++------------------ dkbuild | 8 +++++++- 4 files changed, 60 insertions(+), 24 deletions(-) diff --git a/cx-conndev b/cx-conndev index 42fa232..a00f23b 100755 --- a/cx-conndev +++ b/cx-conndev @@ -2,6 +2,8 @@ # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 +[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) + function display_help() { uecho "$scriptname: se connecter à la base MySQL @@ -11,6 +13,8 @@ USAGE $scriptname -c [-uUSER [-pPASSWORD]] /dev/null || die_not_found +setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die_not_found [ -n "$cid" ] || die_not_found edebug "$service id: $cid" @@ -107,7 +112,7 @@ elif [ -n "$klean" ]; then estep "wait 10sec..." sleep 10 estep "start" - docker-compose start "$service" + "${DOCKER_COMPOSE[@]}" start "$service" else [ -f bin/conndev.php ] || die "Impossible de trouver le script compagnon conndev.php" diff --git a/cx-shelldev b/cx-shelldev index 65b23aa..defb0bf 100755 --- a/cx-shelldev +++ b/cx-shelldev @@ -2,6 +2,8 @@ # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 +[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) + function display_help() { uecho "$scriptname: ouvrir un shell dans le container @@ -9,6 +11,8 @@ USAGE $scriptname [CMD...] OPTIONS + --compose-v1 + Forcer l'utilisation de docker-compose v1 -h, -s, --service SERVICE Spécifier le nom du service sur lequel ouvrir le shell -d, --db @@ -20,6 +24,7 @@ OPTIONS service=web args=( --help '$exit_with display_help' + --compose-v1 '$DOCKER_COMPOSE=(docker-compose)' -h:,-s:,--service: service= -d,--db service=db -w,--web service=web @@ -47,9 +52,9 @@ fi ### -setx cid=docker-compose ps -q "$service" 2>/dev/null || die "$service: service introuvable" +setx cid="${DOCKER_COMPOSE[@]}" ps -q "$service" 2>/dev/null || die "$service: service introuvable" cmd=("$@") [ ${#cmd[*]} -gt 0 ] || cmd=(bash) -docker-compose exec "$service" "${cmd[@]}" +"${DOCKER_COMPOSE[@]}" exec "$service" "${cmd[@]}" diff --git a/dk b/dk index 8ad5602..ff3293f 100755 --- a/dk +++ b/dk @@ -1237,7 +1237,7 @@ function default_update_build_env() { function update_build_env() { default_update_build_env "$@"; } function default_compose_build() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ build \ ${NO_CACHE:+--no-cache} \ @@ -1307,7 +1307,7 @@ function auto_build() { } function default_compose_push() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ push \ "$@" @@ -1345,7 +1345,7 @@ function auto_push() { } function default_compose_up() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ up "${replace_run_args[@]}" "${run_args[@]}" \ "${replace_user_args[@]}" "${user_args[@]}" "$@" @@ -1379,7 +1379,7 @@ function auto_up() { } function default_compose_stop() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ stop "${replace_stop_args[@]}" "${stop_args[@]}" \ "$@" @@ -1408,7 +1408,7 @@ function auto_stop() { } function default_compose_logs() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ logs "${replace_logs_args[@]}" "${logs_args[@]}" \ "$@" @@ -1439,7 +1439,7 @@ function auto_logs() { } function default_compose_down() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ down "${replace_down_args[@]}" "${down_args[@]}" \ "$@" @@ -1474,7 +1474,7 @@ function auto_down() { } function default_compose_run() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ run "${replace_run_args[@]}" "${run_args[@]}" \ "${replace_user_args[@]}" "${user_args[@]}" "$@" @@ -1545,7 +1545,7 @@ function auto_run() { } function default_compose_exec() { - ${FAKE:+qvals} docker-compose \ + ${FAKE:+qvals} "${DOCKER_COMPOSE[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ exec "${replace_exec_args[@]}" "${exec_args[@]}" \ "$@" @@ -1759,7 +1759,7 @@ function auto_status() { function default_compose_show_ip() { local -a cmd cids; local cid cmd=( - docker-compose + "${DOCKER_COMPOSE[@]}" "${replace_env_args[@]}" "${env_args[@]}" ps -q "${replace_show_ip_args[@]}" "${show_ip_args[@]}" "$@" @@ -1795,21 +1795,38 @@ function auto_show_ip() { } function default_compose_systemd_unit() { - local docker_compose="$(which docker-compose 2>/dev/null)" - if [ -z "$docker_compose" ]; then - if [ -x /usr/bin/docker-compose ]; then - docker_compose=/usr/bin/docker-compose - elif [ -x /usr/local/bin/docker-compose ]; then - docker_compose=/usr/local/bin/docker-compose - else - die "Impossible de trouver docker-compose" + local -a docker_compose + if [ "${DOCKER_COMPOSE[0]}" == docker ]; then + # compose v2 + local docker="$(which docker 2>/dev/null)" + if [ -z "$docker" ]; then + if [ -x /usr/bin/docker ]; then + docker=/usr/bin/docker + elif [ -x /usr/local/bin/docker ]; then + docker=/usr/local/bin/docker + else + die "Impossible de trouver docker" + fi + fi + docker_compose=("$docker" compose) + else + # compose v1 + docker_compose="$(which docker-compose 2>/dev/null)" + if [ -z "$docker_compose" ]; then + if [ -x /usr/bin/docker-compose ]; then + docker_compose=/usr/bin/docker-compose + elif [ -x /usr/local/bin/docker-compose ]; then + docker_compose=/usr/local/bin/docker-compose + else + die "Impossible de trouver docker-compose" + fi fi fi - setx startcmd=qvals "$docker_compose" \ + setx startcmd=qvals "${docker_compose[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \ up "${replace_run_args[@]}" "${run_args[@]}" \ "${replace_user_args[@]}" "${user_args[@]}" "$@" - setx stopcmd=qvals "$docker_compose" down + setx stopcmd=qvals "${docker_compose[@]}" down } function default_docker_systemd_unit() { local docker="$(which "$DOCKER" 2>/dev/null)" @@ -2390,6 +2407,8 @@ elif progexists podman; then DOCKER=podman else DOCKER=docker fi +[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) + DEFAULT_PROFILE=devel PROFILE= DM_ALIASES=() @@ -2431,6 +2450,7 @@ update_apps_origin= update_apps_branch= args=( --help '$exit_with display_help' + --compose-v1 '$DOCKER_COMPOSE=(docker-compose)' -d:,--chdir: chdir= -c:,--config: CONFIG= -p:,--profile: PROFILE= diff --git a/dkbuild b/dkbuild index dd8d4c9..3df7a11 100755 --- a/dkbuild +++ b/dkbuild @@ -6,6 +6,8 @@ urequire ptools xmlsupport SELF="$script" TEMPLATEDIR="$scriptdir/lib/dkbuild/templates" +[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) + function get_default_phpbuilder_image() { echo "${REGISTRY:-docker.univ-reunion.fr}/image/phpbuilder:${DIST:-d11}" } @@ -28,6 +30,8 @@ OPTIONS --href, --help-reference Afficher la référence sur les commandes utilisables dans un fichier dkbuild + --compose-v1 + Forcer l'utilisation de docker-compose v1 ACTIONS @@ -2070,7 +2074,7 @@ function define_functions_cmd() { echo_setv "$evar=${ENVIRON[$evar]}" >>.env done - _runcmd docker-compose "${args[@]}" build "${bargs[@]}" "$@" || die + _runcmd "${DOCKER_COMPOSE[@]}" "${args[@]}" build "${bargs[@]}" "$@" || die } function _local_composer() { case "$action" in @@ -3011,6 +3015,7 @@ while [ $# -gt 0 ]; do --help) args+=("$1"); shift; continue;; --hdk|--help-dkbuild) args+=("$1"); shift; continue;; --href|--help-reference) args+=("$1"); shift; continue;; + --compose-v1) args+=("$1"); shift; continue;; -*|*=*) # option quelconque: inférer build args+=(build) break @@ -3026,6 +3031,7 @@ args=(+ --help '$exit_with display_help' --hdk,--help-dkbuild '$exit_with display_help_dkbuild' --href,--help-reference '$exit_with display_help_reference' + --compose-v1 '$DOCKER_COMPOSE=(docker-compose)' ) parse_args "$@"; set -- "${args[@]}"