Вернулась команда iptv exec, исправлена rebuild

This commit is contained in:
2025-07-05 00:19:28 +08:00
parent 4d2cfe8030
commit 10bf297543
2 changed files with 30 additions and 10 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,7 @@
/.idea/
/.vscode/
/docker/keydb/data/*
/log/**/*
/iptvc/
/web/
/docs/

38
iptv
View File

@@ -338,6 +338,7 @@ docker.build_base_images() {
# done
subtitle "Построение образов"
docker.compose build
[ ! -d web/cache/views ] && mkdir -p web/cache/views
success "Базовые образы построены"
}
@@ -432,7 +433,7 @@ find_services_compose() {
[ "$*" ] && for svc in "$@"; do
grep_match "$svc" "^--?.*" && continue
svc="$(find_service_compose "$svc")"
svc="$(find_service_compose "${svc/iptv-/}")"
services="$services $svc"
done
@@ -494,12 +495,11 @@ up() {
process_help_arg
subtitle "Создание и запуск контейнеров"
argl profiles 0 profiles
local services=''
[ "$*" ] && services="$(find_services_compose "$@")"
COMPOSE_PROFILES="$profiles" docker.compose up "$services" --build --detach --remove-orphans && \
[ ! -d web/cache/views ] && mkdir -p web/cache/views
docker.compose up "$services" --build --detach --remove-orphans && \
success 'Среда запущена успешно'
}
@@ -522,13 +522,10 @@ down() {
process_help_arg
subtitle "Остановка и удаление контейнеров"
argl profiles 0 profiles
[[ -z "$profiles" ]] && profiles="full"
local services=''
[ "$*" ] && services="$(find_services_compose "$@")"
COMPOSE_PROFILES="$profiles" docker.compose down "$services" --remove-orphans && \
docker.compose down "$services" --remove-orphans && \
success 'Среда остановлена успешно'
}
@@ -554,7 +551,7 @@ rebuild() {
is_full=$(arg full 1)
[ "$is_full" = 0 ] && is_full=$(argl full 1)
[ -n "$*" ] && down "$@"
[ -n "$*" ] && down "$@" || down
[ "$is_full" = 1 ] && docker.build_base_images
up "$@"
@@ -579,6 +576,27 @@ purge() {
success 'Образы удалены успешно'
}
# Выполняет команду в контейнере
exec() {
process_help_arg
as_root=0
svc="$1"
regex_match "$svc" "--?r(oot)?" && { as_root=1; shift; svc="$1"; }
svc_correct="iptv-$(find_service_compose "$svc")"
command=("${@:2}")
regex_match "${command[0]}" "--?r(oot)?" && { as_root=1; unset "command[0]"; }
[[ -z "${command[*]}" ]] && die "не указана команда для выполнения в контейнере"
#TODO многострочные команды прокидываются корректно, но выполняется только первая строка?
if [[ "$as_root" == 1 ]]; then
docker.exec "$svc_correct" "${command[*]}"
else
docker.exec_www "$svc_correct" "${command[*]}"
fi
}
# Выводит логи сервиса
logs() {
process_help_arg
@@ -602,7 +620,6 @@ stats() {
docker.compose stats "$@"
}
########################################################
# Команды справки
########################################################
@@ -827,6 +844,7 @@ case "$COMMAND" in
stop ) stop "$@" ;;
r|rebuild ) rebuild "$@" ;;
restart ) restart "$@" ;;
exec ) exec "$@" ;;
purge ) purge ;;
logs ) logs "$@" ;;
stats ) stats "$@" ;;