80 lines
2.6 KiB
Bash
80 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
########################################################
|
|
# Docker wrappers
|
|
########################################################
|
|
|
|
# Вызывает корректную команду docker compose
|
|
docker.compose() {
|
|
require docker
|
|
|
|
argl profiles 0 profiles
|
|
args=${*/--profiles=[a-zA-Z_,0-9]*/}
|
|
|
|
if $(docker compose &>/dev/null); then
|
|
local cmd="docker compose $args"
|
|
elif installed_pkg "docker-compose"; then
|
|
local cmd="docker-compose $args"
|
|
warn
|
|
warn "docker-compose v1 устарел и не поддерживается, его поведение непредсказуемо."
|
|
warn "Обнови docker согласно документации: https://docs.docker.com/engine/install/"
|
|
warn
|
|
else
|
|
error "Должен быть установлен docker-compose-plugin!"
|
|
die "Установи docker согласно документации: https://docs.docker.com/engine/install/" 2
|
|
fi
|
|
|
|
if [[ "$profiles" ]]; then
|
|
export COMPOSE_PROFILES=$profiles
|
|
debug "Выполнено: export COMPOSE_PROFILES=$profiles"
|
|
fi
|
|
|
|
debug "Команда: $cmd"
|
|
$cmd
|
|
}
|
|
|
|
# Выводит информацию о контейнере
|
|
docker.inspect() {
|
|
cmd="docker inspect $*"
|
|
debug "Команда: $cmd"
|
|
$cmd 2>/dev/null
|
|
}
|
|
|
|
# Выполняет команду в контейнере от имени root
|
|
docker.exec() {
|
|
cmd="docker exec -u root -it $*"
|
|
debug "Команда: $cmd"
|
|
$cmd
|
|
}
|
|
|
|
# Выводит информацию о контейнере
|
|
docker.inspect() {
|
|
cmd="docker inspect $*"
|
|
debug "Команда: $cmd"
|
|
$cmd 2>/dev/null
|
|
}
|
|
|
|
docker.ip() { # not finished
|
|
if [ "$1" ]; then
|
|
if [ "$1" = "-a" ]; then
|
|
docker ps -aq \
|
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
|
| sed -e 's#^/##' \
|
|
| column -t
|
|
elif [ "$1" = "-c" ]; then
|
|
docker-compose ps -q \
|
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
|
| sed -e 's#^/##' \
|
|
| column -t
|
|
else
|
|
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
|
|
docker port "$1"
|
|
fi
|
|
else
|
|
docker ps -q \
|
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
|
| sed -e 's#^/##' \
|
|
| column -t
|
|
fi
|
|
}
|