dk: support de push pour docker-compose

This commit is contained in:
Jephté Clain 2019-05-31 17:14:59 +04:00
parent ccbfff4366
commit d79e218dfc
2 changed files with 62 additions and 7 deletions

14
TODO.md
View File

@ -1,3 +1,17 @@
# TODO # 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 -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

55
dk
View File

@ -12,7 +12,12 @@ COMMANDES
build [SERVICE] build [SERVICE]
Construire les images Construire les images
push 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] start, run [SERVICE]
Démarrer le(s) service(s) Démarrer le(s) service(s)
stop [SERVICE] stop [SERVICE]
@ -51,15 +56,23 @@ COMMANDES
OPTIONS générales OPTIONS générales
(ces options sont communes à toutes les commandes) (ces options sont communes à toutes les commandes)
-d, --chdir PROJDIR -d, --chdir PROJDIR
Spécifier le répertoire du projet
-p, --profile PROFILE -p, --profile PROFILE
-P, --prod -P, --prod
-T, --test -T, --test
Spécifier le profil
-m, --set-machine MACHINE
Choisir l'environnement docker-machine spécifié avant de lancer les
commandes
-n, --fake -n, --fake
-j, --no-cache Ne pas lancer les commandes, simplement les afficher
-h, --host HOST -h, --host HOST
Spécifier l'hôte pour la commande systemd-unit
OPTIONS build OPTIONS build
(ces options ne sont valides que pour les commandes build, brd, bs) (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 -g, --ug, --no-update-apps
ne pas mettre à jour les dépôts dépendants. ces dépôts sont définis dans 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: le fichier update-apps.conf qui a le format suivant:
@ -441,22 +454,40 @@ function auto_build() {
fi 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() { function auto_push() {
local -a replace_env_args env_args local -a replace_env_args env_args
local -a replace_build_args build_args local -a replace_build_args build_args
local tag
initialize_build_env initialize_build_env
if [ -f docker-compose.yml ]; then if [ -f docker-compose.yml ]; then
compose_set_env_args compose_set_env_args
update_build_env update_build_env
compose_push "$@"
else else
docker_parse_env_args docker_parse_env_args
docker_check_name docker_check_name
update_build_env update_build_env
docker_push "$@"
fi fi
for tag in "${TAGS[@]}"; do
${FAKE:+qvals} docker push "$NAME:$tag"
done
} }
function default_compose_up() { function default_compose_up() {
@ -744,7 +775,9 @@ DM_PROFILES=()
set_defaults dk set_defaults dk
export PROFILE export PROFILE
DM_AVAILABLE=
if progexists docker-machine; then if progexists docker-machine; then
DM_AVAILABLE=1
setx active_dm=docker-machine active 2>/dev/null setx active_dm=docker-machine active 2>/dev/null
for dm_profile in "${DM_PROFILES[@]}"; do for dm_profile in "${DM_PROFILES[@]}"; do
splitpair "$dm_profile" dm profile splitpair "$dm_profile" dm profile
@ -756,6 +789,7 @@ if progexists docker-machine; then
fi fi
chdir= chdir=
DM_SET_MACHINE=
FAKE= FAKE=
NO_CACHE= NO_CACHE=
HOST= HOST=
@ -768,6 +802,7 @@ args=(
-p:,--profile: PROFILE= -p:,--profile: PROFILE=
-P,--prod PROFILE=prod -P,--prod PROFILE=prod
-T,--test PROFILE=test -T,--test PROFILE=test
-m:,--set-machine: DM_SET_MACHINE=
-n,--fake FAKE=1 -n,--fake FAKE=1
-j,--no-cache NO_CACHE=1 -j,--no-cache NO_CACHE=1
-h:,--host: HOST= -h:,--host: HOST=
@ -778,6 +813,12 @@ args=(
) )
parse_args "$@"; set -- "${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 # construire par défaut
[ $# -eq 0 ] && set -- build [ $# -eq 0 ] && set -- build
[ -n "$PROFILE" ] || PROFILE="$DEFAULT_PROFILE" [ -n "$PROFILE" ] || PROFILE="$DEFAULT_PROFILE"
@ -799,7 +840,7 @@ while [ $# -gt 0 ]; do
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build "${args[@]}" || die auto_build "${args[@]}" || die
;; ;;
push) p|push)
[ -f .build.scripts.sh ] && source ./.build.scripts.sh [ -f .build.scripts.sh ] && source ./.build.scripts.sh
[ -f build.scripts.sh ] && source ./build.scripts.sh [ -f build.scripts.sh ] && source ./build.scripts.sh
args=() args=()