Direct docker based rtpctl feature complete
This commit is contained in:
parent
757fc14476
commit
a5e497b257
118
_bin/rtpctl.d
118
_bin/rtpctl.d
|
@ -2,78 +2,67 @@
|
|||
|
||||
RPH_UID=${RPH_UID:-${UID}}
|
||||
|
||||
rph-docker-exec () {
|
||||
docker exec $1 runtipi-host "${@:2}"
|
||||
}
|
||||
# Identify source path (even if symlinked)
|
||||
SOURCE=${BASH_SOURCE[0]}
|
||||
while [ -L "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
||||
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
|
||||
SOURCE=$(readlink "$SOURCE")
|
||||
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
||||
done
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${SOURCE}" )" &> /dev/null && pwd )
|
||||
|
||||
rph-shell() {
|
||||
if rph-docker-exec "" true; then
|
||||
rph-docker-exec "-it --user ${RPH_UID}" bash
|
||||
fi
|
||||
}
|
||||
BASE_NAME="$(basename -- "$0")"
|
||||
BASE_BASE_NAME="${BASE_NAME%.*}"
|
||||
|
||||
rph-exec () {
|
||||
local set_x=" set -x; pwd; id; "
|
||||
[ -z "$QUIET" ] || set_x=""
|
||||
local cli="cd ${START_DIR:-/srv/runtipi};${set_x} ${1:?Must supply command} "
|
||||
if [ -n "$ROOT_EXEC" ]; then
|
||||
cli="$cli ${*:2}"
|
||||
else
|
||||
cli="$cli "${2:+"$(
|
||||
printf '\"%s\" ' "${@:2}"
|
||||
)"}
|
||||
fi
|
||||
RUNTIPI_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||
RUNTIPI_CLI="${RUNTIPI_ROOT}/runtipi_cli"
|
||||
set -e
|
||||
|
||||
if rph exec runtipi true; then
|
||||
if [ -n "$ROOT_EXEC" ]; then
|
||||
rph exec runtipi /bin/bash <<<"$cli"
|
||||
else
|
||||
rph shell --uid "${RPH_UID}" runtipi /bin/bash -c "$cli"
|
||||
fi
|
||||
else
|
||||
echo "ERROR: ${_ERROR_MGS:-"Please check if runtipi jail has started! Have you tried 'full-start'?"}" >&2
|
||||
exit -1
|
||||
fi
|
||||
}
|
||||
cd "${RUNTIPI_ROOT}" > /dev/null
|
||||
|
||||
runtipi-cli() {
|
||||
rph-exec ./runtipi-cli "${@}"
|
||||
if ! [ -x "${RUNTIPI_CLI}" ]; then
|
||||
>&2 printf '%s\n' \
|
||||
"ERROR: ${RUNTIPI_CLI} not found or not executable!"
|
||||
return 1
|
||||
fi
|
||||
"${RUNTIPI_CLI}" "${@}"
|
||||
}
|
||||
|
||||
append_file_param() {
|
||||
[ -e "${2:?File name missing}" ] || return
|
||||
echo "${*}"
|
||||
}
|
||||
|
||||
runtipi-app-docker-compose() {
|
||||
local APP="${1:-Must supply app name}"
|
||||
local LOCAL_YML="user-config/${APP}/docker-compose.yml"
|
||||
|
||||
rph exec runtipi test -e "/srv/runtipi/${LOCAL_YML}" || LOCAL_YML=""
|
||||
[ -z "$LOCAL_YML" ] || LOCAL_YML="--file ${LOCAL_YML}"
|
||||
|
||||
rph-exec docker compose \
|
||||
--env-file user-config/.env.local \
|
||||
--env-file app-data/${APP}/app.env \
|
||||
--env-file user-config/${APP}/app.env \
|
||||
docker compose \
|
||||
$(append_file_param --env-file user-config/.env.local) \
|
||||
$(append_file_param --env-file app-data/${APP}/app.env) \
|
||||
$(append_file_param --env-file user-config/${APP}/app.env) \
|
||||
--project-name ${APP} \
|
||||
--file apps/${APP}/docker-compose.yml \
|
||||
--file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml \
|
||||
${LOCAL_YML} ${@:2}
|
||||
$(if [ "$APP" != "runtipi" ]; then
|
||||
echo --file apps/${APP}/docker-compose.yml
|
||||
append_file_param --file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml
|
||||
append_file_param --file "user-config/${APP}/docker-compose.yml"
|
||||
fi) \
|
||||
${@:2}
|
||||
}
|
||||
|
||||
dls() {
|
||||
# Default docker ps format is:
|
||||
# rph-exec docker ps --format "table {{ .ID }}\t{{ .Image }}\t{{ .Command }}\t{{ .Created }}\t{{ .Status }}\t{{ .Ports }}\t{{ .Names }}"
|
||||
|
||||
local base='{{.Status}}\t{{.ID}}\t{{.Names}}\t{{.Image}}' #'\t{{.Networks}}\t{{.Ports}}\t{{.Mounts}}'
|
||||
local compose='{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.service"}}'
|
||||
local format="table $compose\t$base"
|
||||
ROOT_EXEC=1 QUIET=${QUIET:-0} rph-exec \
|
||||
docker "container ls --all --format '$format' | ( sed -u '1s/.*/\U&/; q'; sed -Ee 's|^|555|; s|^555runtipi|000runtipi|;' | sort | sed -Ee 's/^[[:digit:]]{3}//' )"
|
||||
docker container ls --all --format "$format" | ( sed -u '1s/.*/\U&/; q'; sed -Ee 's|^|555|; s|^555runtipi|000runtipi|;' | sort | sed -Ee 's/^[[:digit:]]{3}//' )
|
||||
}
|
||||
|
||||
case "${1}" in
|
||||
cli)
|
||||
runtipi-cli "${@:2}"
|
||||
;;
|
||||
log)
|
||||
rph-exec "POSTGRES_PASSWORD=_ TIPI_VERSION=_ LOCAL_DOMAIN=_ DOMAIN=_" docker compose --env-file user-config/.env.local logs --tail=${TAIL:-40} "${2:-runtipi}" ${3:+"${@:3}"}
|
||||
log|logs)
|
||||
POSTGRES_PASSWORD=_ TIPI_VERSION=_ LOCAL_DOMAIN=_ DOMAIN=_ runtipi-app-docker-compose "${2:-runtipi}" logs ${3:+"${@:3}"}
|
||||
;;
|
||||
start)
|
||||
runtipi-cli start --env-file user-config/.env.local --no-permissions
|
||||
|
@ -81,22 +70,8 @@ case "${1}" in
|
|||
update)
|
||||
runtipi-cli update --env-file user-config/.env.local --no-permissions "${2:?Must supply version}" "${@:3}"
|
||||
;;
|
||||
full-start)
|
||||
if ! rph exec runtipi true; then
|
||||
rph start runtipi
|
||||
sleep 1s
|
||||
fi
|
||||
_ERROR_MSG="ERROR: failed to invoke a command inside the runtipi jail and can't start the jail." \
|
||||
runtipi-cli start --env-file user-config/.env.local --no-permissions
|
||||
;;
|
||||
shell)
|
||||
rph-shell
|
||||
;;
|
||||
exec)
|
||||
rph-exec "${@:2}"
|
||||
;;
|
||||
docker)
|
||||
rph-exec docker "${@:2}"
|
||||
docker "${@:2}"
|
||||
;;
|
||||
dls)
|
||||
dls "${@:2}"
|
||||
|
@ -105,22 +80,25 @@ case "${1}" in
|
|||
runtipi-app-docker-compose "${@:2}"
|
||||
;;
|
||||
dockge)
|
||||
START_DIR=/srv/dockge/stacks/${2:?Must supply stack name} rph-exec docker compose "${@:3}"
|
||||
cd "${RUNTIPI_ROOT}/../dockge/stacks/${2:?Must supply stack name}" > /dev/null
|
||||
docker compose "${@:3}"
|
||||
;;
|
||||
setup)
|
||||
ln -s $2 "$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" "$HOME/.local/bin/"
|
||||
ln -s $2 "$(cd -- "${SCRIPT_DIR}" && pwd)/${BASE_NAME}" "${3:-$HOME/.local/bin/}"
|
||||
;;
|
||||
edit)
|
||||
${VISUAL:-${EDITOR:-vi}} $0
|
||||
;;
|
||||
*)
|
||||
printf '%s %-12s %s\n' \
|
||||
"" "" ""\
|
||||
"Usage:" "" ""\
|
||||
" $(basename "$0") <command> [args...]" "" ""\
|
||||
" ${BASE_NAME} <command> [args...]" "" ""\
|
||||
"" "" "" \
|
||||
"Available commands:" "" ""\
|
||||
"" "" "" \
|
||||
"runtipi" "" ""\
|
||||
"" "cli" "runtipi-cli" \
|
||||
"" "full-start" "start runtipi jail, following with starting runtipi" \
|
||||
"" "log" "runtipi docker stack logs" \
|
||||
"" "start" "start runtipi" \
|
||||
"" "update" "update runtipi to a specific version" \
|
||||
|
@ -136,6 +114,9 @@ case "${1}" in
|
|||
"" "shell" "enter an insteractive shell" \
|
||||
"" "" "" \
|
||||
"" "setup" "setup runtipictl in user's .local/bin dir" \
|
||||
"" "" "${BASE_NAME} setup" \
|
||||
"" "" "${BASE_NAME} setup '' ~/.local/bin/${BASE_BASE_NAME}" \
|
||||
"" "" "${BASE_NAME} setup '' ~/.local/bin/runtipictl" \
|
||||
"" "" "" \
|
||||
"Related env. vars:" "" "" \
|
||||
"" "VISUAL EDITOR RPH_UID QUIET START_DIR ROOT_EXEC" ""
|
||||
|
@ -143,3 +124,4 @@ case "${1}" in
|
|||
;;
|
||||
esac
|
||||
|
||||
# vim: set ft=sh expandtab tabstop=4 shiftwidth=4:
|
||||
|
|
|
@ -152,3 +152,4 @@ case "${1}" in
|
|||
;;
|
||||
esac
|
||||
|
||||
# vim: set ft=sh expandtab tabstop=4 shiftwidth=4:
|
||||
|
|
Loading…
Reference in New Issue