From d79e218dfcdb97bcec9f06f8565e2522a0c592ce Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Fri, 31 May 2019 17:14:59 +0400 Subject: [PATCH] dk: support de push pour docker-compose --- TODO.md | 14 ++++++++++++++ dk | 55 ++++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/TODO.md b/TODO.md index 32dea67..bff2333 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,17 @@ # TODO +## dk + +Ajouter le support du déploiement de services dans un swarm + +Les nouvelles actions suivantes sont disponibles: +* deploy -- déployer un service +* bpd -- équivalent à build, push, deploy +* update -- mettre à jour un service déployé +* bpu -- équivalent à build, push, update +* rollback -- annuler la mise à jour d'un service + +Pour toutes ces actions, utiliser par défaut docker-stack.yml s'il existe, +sinon utiliser docker-compose.yml (en tenant compte des paramètres des profils) + -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/dk b/dk index 41b7438..8e5f0cb 100755 --- a/dk +++ b/dk @@ -12,7 +12,12 @@ COMMANDES build [SERVICE] Construire les images push - Pousser les images vers le serveur + push [SERVICES...] + La première syntaxe est utilisable avec un projet docker. Elle permet de + pousser l'image qui a été construite avec build vers le serveur + La deuxième syntaxe est utilisée avec un projet docker-compose. Elle + permet de pousser les images correspondant aux services qui ont été + construit vers le serveur. start, run [SERVICE] Démarrer le(s) service(s) stop [SERVICE] @@ -51,15 +56,23 @@ COMMANDES OPTIONS générales (ces options sont communes à toutes les commandes) -d, --chdir PROJDIR + Spécifier le répertoire du projet -p, --profile PROFILE -P, --prod -T, --test + Spécifier le profil + -m, --set-machine MACHINE + Choisir l'environnement docker-machine spécifié avant de lancer les + commandes -n, --fake - -j, --no-cache + Ne pas lancer les commandes, simplement les afficher -h, --host HOST + Spécifier l'hôte pour la commande systemd-unit OPTIONS build (ces options ne sont valides que pour les commandes build, brd, bs) + -j, --no-cache + Ne pas utiliser le cache lors du build -g, --ug, --no-update-apps ne pas mettre à jour les dépôts dépendants. ces dépôts sont définis dans le fichier update-apps.conf qui a le format suivant: @@ -441,22 +454,40 @@ function auto_build() { fi } +function default_compose_push() { + ${FAKE:+qvals} docker-compose \ + "${replace_env_args[@]}" "${env_args[@]}" \ + push \ + "$@" +} +function default_docker_push() { + ${FAKE:+qvals} docker push \ + "${replace_env_args[@]}" "${env_args[@]}" \ + "$@" +} +function compose_push() { + default_compose_push "$@" +} +function docker_push() { + local tag + for tag in "${TAGS[@]}"; do + default_docker_push "$NAME:$tag" "$@" + done +} function auto_push() { local -a replace_env_args env_args local -a replace_build_args build_args - local tag initialize_build_env if [ -f docker-compose.yml ]; then compose_set_env_args update_build_env + compose_push "$@" else docker_parse_env_args docker_check_name update_build_env + docker_push "$@" fi - for tag in "${TAGS[@]}"; do - ${FAKE:+qvals} docker push "$NAME:$tag" - done } function default_compose_up() { @@ -744,7 +775,9 @@ DM_PROFILES=() set_defaults dk export PROFILE +DM_AVAILABLE= if progexists docker-machine; then + DM_AVAILABLE=1 setx active_dm=docker-machine active 2>/dev/null for dm_profile in "${DM_PROFILES[@]}"; do splitpair "$dm_profile" dm profile @@ -756,6 +789,7 @@ if progexists docker-machine; then fi chdir= +DM_SET_MACHINE= FAKE= NO_CACHE= HOST= @@ -768,6 +802,7 @@ args=( -p:,--profile: PROFILE= -P,--prod PROFILE=prod -T,--test PROFILE=test + -m:,--set-machine: DM_SET_MACHINE= -n,--fake FAKE=1 -j,--no-cache NO_CACHE=1 -h:,--host: HOST= @@ -778,6 +813,12 @@ args=( ) parse_args "$@"; set -- "${args[@]}" +if [ -n "$DM_SET_MACHINE" ]; then + [ -n "$DM_AVAILABLE" ] || die "docker-machine n'est pas disponible" + setx dm_env=docker-machine env "$DM_SET_MACHINE" || die + eval "$dm_env" +fi + # construire par défaut [ $# -eq 0 ] && set -- build [ -n "$PROFILE" ] || PROFILE="$DEFAULT_PROFILE" @@ -799,7 +840,7 @@ while [ $# -gt 0 ]; do enote "Profil $PROFILE" auto_build "${args[@]}" || die ;; - push) + p|push) [ -f .build.scripts.sh ] && source ./.build.scripts.sh [ -f build.scripts.sh ] && source ./build.scripts.sh args=()