ajouter la commande deploy

This commit is contained in:
Jephté Clain 2019-06-01 14:34:20 +04:00
parent 5967541159
commit 8cb3b2fc57
1 changed files with 132 additions and 23 deletions

155
dk
View File

@ -9,39 +9,55 @@ USAGE
$scriptname CMDs... $scriptname CMDs...
COMMANDES COMMANDES
build [SERVICE] b|build [SERVICE]
Construire les images Construire les images
push p|push
push [SERVICES...] p|push [SERVICES...]
La première syntaxe est utilisable avec un projet docker. Elle permet de 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 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 La deuxième syntaxe est utilisée avec un projet docker-compose. Elle
permet de pousser les images correspondant aux services qui ont été permet de pousser les images correspondant aux services qui ont été
construit vers le serveur. construit vers le serveur.
start, run [SERVICE] s|start|run [SERVICE]
Démarrer le(s) service(s) Démarrer le(s) service(s)
stop [SERVICE] k|stop [SERVICE]
Arrêter le(s) service(s) Arrêter le(s) service(s)
up 1|up
Créer l'environnement, démarrer les services et suivre les logs de façon Créer l'environnement, démarrer les services et suivre les logs de façon
interactive. interactive.
logs [SERVICE] Vaguement équivalent à -- start -- logs
l|logs [SERVICE]
Afficher les logs Afficher les logs
down 0|down
Arrêter les services et supprimer l'environnement Arrêter les services et supprimer l'environnement
brd d|brd
Construire les images (comme avec build), démarrer les services et 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 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 arrête l'affichage des logs avec Ctrl+C, arrêter les services et
supprimer l'environnement (comme avec down) supprimer l'environnement (comme avec down)
Vaguement équivalent à -- build -- start [args] -- logs
suivi de -- down
bs bs
Construire les images (comme avec build) puis démarrer les services Construire les images (comme avec build) puis démarrer les services
(comme avec start) (comme avec start)
ip [SERVICE] Equivalent à -- build -- start [args]
y|deploy
(Re)déployer un service. Cette commande ne fonctionne qu'en mode swarm
avec docker-compose. Implique --stack
S'il existe un fichier docker-stack.yml, il est utilisé de préférence à
la place de docker-compose.yml. De même, les fichiers de profil de la
forme docker-stack.PROFILE.yml sont utilisés de préférence à
docker-compose.PROFILE.yml
by|bd
Equivalent à --stack -- build -- deploy [args]
Utilisable notamment en développement
bpy|bpd
Equivalent à --stack -- build -- push -- deploy [args]
ip|show-ip [SERVICE]
Afficher l'adresse IP interne du service Afficher l'adresse IP interne du service
exec SERVICE COMMAND x|exec SERVICE COMMAND
Lancer la commande dans le container spécifié Lancer la commande dans le container spécifié
systemd-unit systemd|systemd-unit
Générer une unité systemd qui démarre les services. A priori, ce n'est Générer une unité systemd qui démarre les services. A priori, ce n'est
nécessaire que si aucune politique de redémarrage n'a été définie. nécessaire que si aucune politique de redémarrage n'a été définie.
ps ps
@ -50,7 +66,7 @@ COMMANDES
Lister les images actuellement présentes Lister les images actuellement présentes
rm rm
Supprimer une image Supprimer une image
prune X|prune
Supprimer les containers et les images inutilisées Supprimer les containers et les images inutilisées
OPTIONS générales OPTIONS générales
@ -70,7 +86,13 @@ OPTIONS générales
Spécifier l'hôte pour la commande systemd-unit 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, bd, bpd)
--stack
Indiquer que le build est fait pour un déploiement avec deploy.
Les fichiers de la forme docker-stack[.PROFILE].yml s'ils existent sont
utilisés de préférence à docker-compose[.PROFILE].yml
Cette option n'est nécessaire que si on fait uniquement le build puisque
les commandes deploy, bd, et bpd impliquent --stack
-j, --no-cache -j, --no-cache
Ne pas utiliser le cache lors du build Ne pas utiliser le cache lors du build
-g, --ug, --no-update-apps -g, --ug, --no-update-apps
@ -93,6 +115,11 @@ OPTIONS build
--ub, --update-apps-branch BRANCH --ub, --update-apps-branch BRANCH
Spécifier la branche par défaut pour update-apps Spécifier la branche par défaut pour update-apps
OPTIONS deploy
-l, --without-registry-auth
Ne pas transporter les informations d'autorisation aux agents swarm
(c'est à dire ne pas utiliser l'option --with-registry-auth)
VARIABLES de update-apps.conf VARIABLES de update-apps.conf
ORIGIN ORIGIN
vaut 'origin' par défaut vaut 'origin' par défaut
@ -168,12 +195,7 @@ function docker_check_name() {
fi fi
} }
function compose_set_env_args() { function compose_set_project_name() {
replace_env_args+=(-f docker-compose.yml)
if [ -f docker-compose.override.yml ]; then
replace_env_args+=(-f docker-compose.override.yml)
fi
local PROJECT_NAME= PROJECT_NAME_REMOVE_SUFFIX=.service PROJECT_NAME_ADD_PROFILE=1 local PROJECT_NAME= PROJECT_NAME_REMOVE_SUFFIX=.service PROJECT_NAME_ADD_PROFILE=1
[ -f .compose.env ] && source ./.compose.env [ -f .compose.env ] && source ./.compose.env
@ -181,8 +203,10 @@ function compose_set_env_args() {
PROJECT_NAME="${PROJECT_NAME%$PROJECT_NAME_REMOVE_SUFFIX}" PROJECT_NAME="${PROJECT_NAME%$PROJECT_NAME_REMOVE_SUFFIX}"
if [ -n "$PROFILE" ]; then if [ -n "$PROFILE" ]; then
if [ -f "docker-compose.$PROFILE.yml" ]; then if [ -n "$USE_STACK" -a -f "docker-stack.$PROFILE.yml" ]; then
replace_env_args+=(-f "docker-compose.$PROFILE.yml") replace_env_args+=(-c "docker-stack.$PROFILE.yml")
elif [ -f "docker-compose.$PROFILE.yml" ]; then
replace_env_args+=(-c "docker-compose.$PROFILE.yml")
fi fi
[ -n "$COMPOSE_PROJECT_NAME" ] || COMPOSE_PROJECT_NAME="$PROJECT_NAME${PROJECT_NAME_ADD_PROFILE:+_${PROFILE}}" [ -n "$COMPOSE_PROJECT_NAME" ] || COMPOSE_PROJECT_NAME="$PROJECT_NAME${PROJECT_NAME_ADD_PROFILE:+_${PROFILE}}"
else else
@ -196,6 +220,34 @@ function compose_set_env_args() {
[ -n "$PROFILE" -a -n "$PROJECT_NAME_ADD_PROFILE" ] && container_name="${container_name}_$PROFILE" [ -n "$PROFILE" -a -n "$PROJECT_NAME_ADD_PROFILE" ] && container_name="${container_name}_$PROFILE"
fi fi
} }
function compose_set_env_args() {
if [ -n "$USE_STACK" -a -f docker-stack.yml ]; then
replace_env_args+=(-f docker-stack.yml)
else
replace_env_args+=(-f docker-compose.yml)
fi
if [ -n "$USE_STACK" -a -f docker-stack.override.yml ]; then
replace_env_args+=(-f docker-stack.override.yml)
elif [ -f docker-compose.override.yml ]; then
replace_env_args+=(-f docker-compose.override.yml)
fi
compose_set_project_name "$@"
}
function compose_set_deploy_args() {
if [ -n "$USE_STACK" -a -f docker-stack.yml ]; then
replace_deploy_args+=(-c docker-stack.yml)
else
replace_deploy_args+=(-c docker-compose.yml)
fi
if [ -n "$USE_STACK" -a -f docker-stack.override.yml ]; then
replace_deploy_args+=(-f docker-stack.override.yml)
elif [ -f docker-compose.override.yml ]; then
replace_deploy_args+=(-f docker-compose.override.yml)
fi
compose_set_project_name "$@"
}
function host_run() { function host_run() {
# lancer le script $2..@ sur l'hôte $1 # lancer le script $2..@ sur l'hôte $1
@ -457,7 +509,7 @@ function auto_build() {
function default_compose_push() { function default_compose_push() {
${FAKE:+qvals} docker-compose \ ${FAKE:+qvals} docker-compose \
"${replace_env_args[@]}" "${env_args[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \
push \ push \
"$@" "$@"
} }
function default_docker_push() { function default_docker_push() {
@ -611,6 +663,26 @@ function auto_down() {
fi fi
} }
function default_compose_deploy() {
${FAKE:+qvals} docker \
stack deploy \
"${replace_deploy_args[@]}" "${deploy_args[@]}" \
"$container_name" "$@"
}
function compose_deploy() { default_compose_deploy "$@"; }
function auto_deploy() {
local -a replace_env_args env_args
local -a replace_deploy_args deploy_args
local project_name container_name
if [ -f docker-compose.yml -o -f docker-stack.yml ]; then
compose_set_deploy_args set_container_name
[ -n "$WITH_REGISTRY_AUTH" ] && replace_deploy_args+=(--with-registry-auth)
compose_deploy "$@"
else
die "Impossible de trouver ni docker-compose.yml ni docker-stack.yml"
fi
}
function default_compose_show_ip() { function default_compose_show_ip() {
local -a cmd cids; local cid local -a cmd cids; local cid
cmd=( cmd=(
@ -790,9 +862,11 @@ fi
chdir= chdir=
DM_SET_MACHINE= DM_SET_MACHINE=
USE_STACK=
FAKE= FAKE=
NO_CACHE= NO_CACHE=
HOST= HOST=
WITH_REGISTRY_AUTH=1
update_apps_mode=ub update_apps_mode=ub
update_apps_origin= update_apps_origin=
update_apps_branch= update_apps_branch=
@ -803,6 +877,7 @@ args=(
-P,--prod PROFILE=prod -P,--prod PROFILE=prod
-T,--test PROFILE=test -T,--test PROFILE=test
-m:,--set-machine: DM_SET_MACHINE= -m:,--set-machine: DM_SET_MACHINE=
--stack USE_STACK=1
-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=
@ -810,6 +885,7 @@ args=(
-u,--uu,--update-apps-only update_apps_mode=u -u,--uu,--update-apps-only update_apps_mode=u
--uo:,--update-apps-origin: update_apps_origin= --uo:,--update-apps-origin: update_apps_origin=
--ub:,--update-apps-branch: update_apps_branch= --ub:,--update-apps-branch: update_apps_branch=
-l,--without-registry-auth WITH_REGISTRY_AUTH=
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
@ -915,6 +991,7 @@ while [ $# -gt 0 ]; do
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
[ -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
USE_STACK=1
args=() args=()
while [ $# -gt 0 -a "$1" != -- ]; do while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift args+=("$1"); shift
@ -922,6 +999,38 @@ while [ $# -gt 0 ]; do
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_up "${args[@]}" auto_build && auto_up "${args[@]}"
;; ;;
y|deploy)
USE_STACK=1
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_deploy "${args[@]}" || die
;;
by|bd)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
[ -f build.scripts.sh ] && source ./build.scripts.sh
USE_STACK=1
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_deploy "${args[@]}"
;;
bpy|bpd)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
[ -f .build.scripts.sh ] && source ./.build.scripts.sh
[ -f build.scripts.sh ] && source ./build.scripts.sh
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_build && auto_push && auto_deploy "${args[@]}"
;;
ip|show-ip) ip|show-ip)
args=() args=()
while [ $# -gt 0 -a "$1" != -- ]; do while [ $# -gt 0 -a "$1" != -- ]; do