fix(bootstrap): skip Docker apt if compose ready; doc containerd conflict

Made-with: Cursor
This commit is contained in:
PTah
2026-04-22 12:15:45 +10:00
parent a58be4b409
commit 98282bde1d
2 changed files with 57 additions and 2 deletions
+23 -2
View File
@@ -110,8 +110,7 @@ install_packages() {
log "Устанавливаю зависимости..."
run_cmd apt-get update
local packages=(
ca-certificates curl jq git openssl
docker.io docker-compose-plugin openssh-client
ca-certificates curl jq git openssl openssh-client
)
if [[ "$ENABLE_HAPROXY" == "true" ]]; then
packages+=(haproxy)
@@ -120,9 +119,31 @@ install_packages() {
packages+=(sshpass)
fi
run_cmd apt-get install -y "${packages[@]}"
bootstrap_install_docker
ok "Пакеты установлены"
}
# Docker: не трогаем apt, если уже есть рабочий «docker compose» (избегаем лишних транзакций и конфликтов).
# Ошибка containerd vs containerd.io — см. docs/troubleshooting.md §12.
bootstrap_install_docker() {
if [[ "$DRY_RUN" == "true" ]]; then
echo "[DRY] apt-get install -y docker.io docker-compose-plugin"
return 0
fi
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
ok "Docker и «docker compose» уже доступны — не устанавливаю docker.io/docker-compose-plugin"
return 0
fi
log "Устанавливаю docker.io и docker-compose-plugin..."
if apt-get install -y docker.io docker-compose-plugin; then
return 0
fi
err "Не удалось установить docker.io и docker-compose-plugin."
err "Частая причина: конфликт пакетов containerd (Ubuntu, от docker.io) и containerd.io (Docker Inc)."
warn "Оставьте один стек Docker: см. docs/troubleshooting.md — «12) containerd.io Conflicts: containerd»."
exit 1
}
setup_dirs() {
log "Создаю рабочие директории..."
run_cmd mkdir -p "$GITEA_BASE_DIR/data/gitea/conf"