From 5d3004c87b8d93f6488863bd2888a7084a9fa614 Mon Sep 17 00:00:00 2001 From: Anthony Axenov Date: Thu, 16 Jan 2025 13:39:16 +0800 Subject: [PATCH] docker helpers --- helpers/docker.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 helpers/docker.sh diff --git a/helpers/docker.sh b/helpers/docker.sh new file mode 100644 index 0000000..3a24c46 --- /dev/null +++ b/helpers/docker.sh @@ -0,0 +1,48 @@ +#!/bin/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 +}