implémenter service, update, scale

This commit is contained in:
Jephté Clain 2019-06-05 10:13:20 +04:00
parent c2f43e6b6d
commit 386fc0d070
1 changed files with 105 additions and 20 deletions

125
dk
View File

@ -41,18 +41,32 @@ COMMANDES
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)
Equivalent à -- build -- start [args] Equivalent à -- build -- start [args]
y|deploy y|deploy [args...]
(Re)déployer un service. Cette commande ne fonctionne qu'en mode swarm (Re)déployer un stack. Cette commande ne fonctionne qu'en mode swarm.
avec docker-compose. Implique --stack Implique --stack
S'il existe un fichier docker-stack.yml, il est utilisé de préférence à by|bd [args...]
la place de docker-compose.yml. De même, les fichiers de profil de la Equivalent à --stack -- build -- deploy args...
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 Utilisable notamment en développement
bpy|bpd bp [args...]
Equivalent à --stack -- build -- push -- deploy [args] Equivalent à --stack -- build -- push args...
bpy|bpd [args...]
Equivalent à --stack -- build -- push -- deploy args...
service COMMAND SERVICE [args...]
Frontend pour 'docker service COMMAND args... SERVICE'
Cette commande ne fonctionne qu'en mode swarm. Il n'est pas nécessaire
de préfixer le nom du service avec le nom du stack, pour être cohérent
avec les autres commandes
IMPORTANT: notez que les arguments sont placés avant le nom du service.
Celà signifie qu'on ne peut spécifier que des options à la commande.
Penser aussi à protéger ces options de l'analyse eg.
$scriptname -- service logs web -f
Pour des cas d'utilisation plus complexe, il faut lancer directement
docker service
u|update SERVICE [args...]
Mettre à jour un service, équivalent à 'service update SERVICE'
scale SERVICE=REPLICAS [args...]
Mettre à jour le nom de réplicas d'un service, équivalent à la commande
'service scale SERVICE=REPLICAS'
ip|show-ip [SERVICE] ip|show-ip [SERVICE]
Afficher l'adresse IP interne du service Afficher l'adresse IP interne du service
x|exec SERVICE COMMAND x|exec SERVICE COMMAND
@ -89,10 +103,12 @@ OPTIONS build
(ces options ne sont valides que pour les commandes build, brd, bs, bd, bpd) (ces options ne sont valides que pour les commandes build, brd, bs, bd, bpd)
--stack --stack
Indiquer que le build est fait pour un déploiement avec deploy. 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 S'il existe un fichier docker-stack.yml, il est utilisé de préférence à
utilisés de préférence à docker-compose[.PROFILE].yml la place de docker-compose.yml. De même, les fichiers de profil de la
Cette option n'est nécessaire que si on fait uniquement le build puisque forme docker-stack.PROFILE.yml sont utilisés de préférence aux fichiers
les commandes deploy, bd, et bpd impliquent --stack docker-compose.PROFILE.yml
Cette option n'est nécessaire qu'avec build puisque les commandes
deploy, bd, bpd et update 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
@ -236,7 +252,7 @@ function compose_set_env_args() {
compose_set_project_name "$@" compose_set_project_name "$@"
} }
function compose_set_deploy_args() { function docker_set_deploy_args() {
if [ -n "$USE_STACK" -a -f docker-stack.yml ]; then if [ -n "$USE_STACK" -a -f docker-stack.yml ]; then
replace_deploy_args+=(-c docker-stack.yml) replace_deploy_args+=(-c docker-stack.yml)
else else
@ -671,21 +687,55 @@ function auto_down() {
fi fi
} }
function default_compose_deploy() { function default_docker_deploy() {
${FAKE:+qvals} docker \ ${FAKE:+qvals} docker \
stack deploy \ stack deploy \
"${replace_deploy_args[@]}" "${deploy_args[@]}" \ "${replace_deploy_args[@]}" "${deploy_args[@]}" \
"$container_name" "$@" "$container_name" "$@"
} }
function compose_deploy() { default_compose_deploy "$@"; } function docker_deploy() { default_docker_deploy "$@"; }
function auto_deploy() { function auto_deploy() {
local -a replace_env_args env_args local -a replace_env_args env_args
local -a replace_deploy_args deploy_args local -a replace_deploy_args deploy_args
local project_name container_name local project_name container_name
if [ -f docker-compose.yml -o -f docker-stack.yml ]; then if [ -f docker-compose.yml -o -f docker-stack.yml ]; then
compose_set_deploy_args set_container_name docker_set_deploy_args set_container_name
[ -n "$WITH_REGISTRY_AUTH" ] && replace_deploy_args+=(--with-registry-auth) [ -n "$WITH_REGISTRY_AUTH" ] && replace_deploy_args+=(--with-registry-auth)
compose_deploy "$@" docker_deploy "$@"
else
die "Impossible de trouver ni docker-compose.yml ni docker-stack.yml"
fi
}
function default_docker_service() {
${FAKE:+qvals} docker service "$@"
}
function docker_service() { default_docker_service "$@"; }
function auto_service() {
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
local command="$1"; shift
[ -n "$command" ] || {
eerror "Vous devez spécifier la commande"
return 1
}
case "$command" in
ls) # ces commandes n'ont pas besoin du nom de service
docker_service "$command" "$@"
;;
*) # ces commandes ont besoin du nom du service
local service="$1"; shift
[ -n "$service" ] || {
eerror "Vous devez spécifier le nom du service"
return 1
}
docker_set_deploy_args set_container_name
service="${container_name}_${service#${container_name}_}"
docker_service "$command" "$@" "$service"
;;
esac
else else
die "Impossible de trouver ni docker-compose.yml ni docker-stack.yml" die "Impossible de trouver ni docker-compose.yml ni docker-stack.yml"
fi fi
@ -1025,6 +1075,17 @@ while [ $# -gt 0 ]; do
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_deploy "${args[@]}" auto_build && auto_deploy "${args[@]}"
;; ;;
bp)
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 "${args[@]}"
;;
bpy|bpd) bpy|bpd)
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
@ -1036,6 +1097,30 @@ while [ $# -gt 0 ]; do
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_push && auto_deploy "${args[@]}" auto_build && auto_push && auto_deploy "${args[@]}"
;; ;;
service)
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_service "${args[@]}" || die
;;
u|update)
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_service update "${args[@]}" || die
;;
scale)
args=()
while [ $# -gt 0 -a "$1" != -- ]; do
args+=("$1"); shift
done
enote "Profil $PROFILE"
auto_service scale "${args[@]}" || die
;;
ip|show-ip) ip|show-ip)
args=() args=()
while [ $# -gt 0 -a "$1" != -- ]; do while [ $# -gt 0 -a "$1" != -- ]; do