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...
COMMANDES
build [SERVICE]
b|build [SERVICE]
Construire les images
push
push [SERVICES...]
p|push
p|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]
s|start|run [SERVICE]
Démarrer le(s) service(s)
stop [SERVICE]
k|stop [SERVICE]
Arrêter le(s) service(s)
up
1|up
Créer l'environnement, démarrer les services et suivre les logs de façon
interactive.
logs [SERVICE]
Vaguement équivalent à -- start -- logs
l|logs [SERVICE]
Afficher les logs
down
0|down
Arrêter les services et supprimer l'environnement
brd
d|brd
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
Construire les images (comme avec build) puis démarrer les services
(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
exec SERVICE COMMAND
x|exec SERVICE COMMAND
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
nécessaire que si aucune politique de redémarrage n'a été définie.
ps
@ -50,7 +66,7 @@ COMMANDES
Lister les images actuellement présentes
rm
Supprimer une image
prune
X|prune
Supprimer les containers et les images inutilisées
OPTIONS générales
@ -70,7 +86,13 @@ OPTIONS générales
Spécifier l'hôte pour la commande systemd-unit
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
Ne pas utiliser le cache lors du build
-g, --ug, --no-update-apps
@ -93,6 +115,11 @@ OPTIONS build
--ub, --update-apps-branch BRANCH
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
ORIGIN
vaut 'origin' par défaut
@ -168,12 +195,7 @@ function docker_check_name() {
fi
}
function compose_set_env_args() {
replace_env_args+=(-f docker-compose.yml)
if [ -f docker-compose.override.yml ]; then
replace_env_args+=(-f docker-compose.override.yml)
fi
function compose_set_project_name() {
local PROJECT_NAME= PROJECT_NAME_REMOVE_SUFFIX=.service PROJECT_NAME_ADD_PROFILE=1
[ -f .compose.env ] && source ./.compose.env
@ -181,8 +203,10 @@ function compose_set_env_args() {
PROJECT_NAME="${PROJECT_NAME%$PROJECT_NAME_REMOVE_SUFFIX}"
if [ -n "$PROFILE" ]; then
if [ -f "docker-compose.$PROFILE.yml" ]; then
replace_env_args+=(-f "docker-compose.$PROFILE.yml")
if [ -n "$USE_STACK" -a -f "docker-stack.$PROFILE.yml" ]; then
replace_env_args+=(-c "docker-stack.$PROFILE.yml")
elif [ -f "docker-compose.$PROFILE.yml" ]; then
replace_env_args+=(-c "docker-compose.$PROFILE.yml")
fi
[ -n "$COMPOSE_PROJECT_NAME" ] || COMPOSE_PROJECT_NAME="$PROJECT_NAME${PROJECT_NAME_ADD_PROFILE:+_${PROFILE}}"
else
@ -196,6 +220,34 @@ function compose_set_env_args() {
[ -n "$PROFILE" -a -n "$PROJECT_NAME_ADD_PROFILE" ] && container_name="${container_name}_$PROFILE"
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() {
# lancer le script $2..@ sur l'hôte $1
@ -457,7 +509,7 @@ function auto_build() {
function default_compose_push() {
${FAKE:+qvals} docker-compose \
"${replace_env_args[@]}" "${env_args[@]}" \
push \
push \
"$@"
}
function default_docker_push() {
@ -611,6 +663,26 @@ function auto_down() {
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() {
local -a cmd cids; local cid
cmd=(
@ -790,9 +862,11 @@ fi
chdir=
DM_SET_MACHINE=
USE_STACK=
FAKE=
NO_CACHE=
HOST=
WITH_REGISTRY_AUTH=1
update_apps_mode=ub
update_apps_origin=
update_apps_branch=
@ -803,6 +877,7 @@ args=(
-P,--prod PROFILE=prod
-T,--test PROFILE=test
-m:,--set-machine: DM_SET_MACHINE=
--stack USE_STACK=1
-n,--fake FAKE=1
-j,--no-cache NO_CACHE=1
-h:,--host: HOST=
@ -810,6 +885,7 @@ args=(
-u,--uu,--update-apps-only update_apps_mode=u
--uo:,--update-apps-origin: update_apps_origin=
--ub:,--update-apps-branch: update_apps_branch=
-l,--without-registry-auth WITH_REGISTRY_AUTH=
)
parse_args "$@"; set -- "${args[@]}"
@ -915,6 +991,7 @@ while [ $# -gt 0 ]; do
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
@ -922,6 +999,38 @@ while [ $# -gt 0 ]; do
enote "Profil $PROFILE"
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)
args=()
while [ $# -gt 0 -a "$1" != -- ]; do