feat(installers): Added docker installer
This commit is contained in:
72
installers/install_docker.sh
Normal file
72
installers/install_docker.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
# Tool: docker
|
||||
# DisplayName: Docker
|
||||
# Description: Container runtime and orchestration platform
|
||||
#
|
||||
# Docker Installer Script
|
||||
#
|
||||
|
||||
# Prevent standalone execution
|
||||
if [ -z "${_LIB_COMMON_SOURCED:-}" ]; then
|
||||
echo "Error: This script must be run through the 'b' CLI." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ─── Installation Logic ──────────────────────────────────────────────
|
||||
|
||||
install_docker() {
|
||||
if has_command docker; then
|
||||
if ! confirm "Docker is already installed. Reinstall/Upgrade?"; then
|
||||
log_info "Skipping Docker installation."
|
||||
return
|
||||
fi
|
||||
else
|
||||
if ! confirm "Install Docker?"; then
|
||||
log_info "Skipping Docker installation."
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
# Use pkg_install for distro packages (it automatically handles rollback hooks for the packages!)
|
||||
pkg_install "arch:docker|debian:docker.io|fedora:docker"
|
||||
|
||||
# Ensure docker group exists (some distros might not create it immediately)
|
||||
if ! getent group docker >/dev/null 2>&1; then
|
||||
log_info "Creating docker group..."
|
||||
add_rollback_cmd "sudo groupdel docker || true"
|
||||
sudo groupadd docker
|
||||
fi
|
||||
|
||||
# Configure user group
|
||||
if ! groups "$USER" | grep -q "\bdocker\b"; then
|
||||
log_info "Adding $USER to the docker group..."
|
||||
add_rollback_cmd "sudo gpasswd -d $USER docker || true"
|
||||
sudo usermod -aG docker "$USER"
|
||||
log_warn "You will need to log out and log back in, or run 'newgrp docker' for the group changes to take effect."
|
||||
fi
|
||||
|
||||
# Enable and start systemd services
|
||||
if has_command systemctl; then
|
||||
log_info "Enabling and starting Docker services..."
|
||||
|
||||
# Add rollback cmds for systemd
|
||||
add_rollback_cmd "sudo systemctl disable --now docker.service || true"
|
||||
add_rollback_cmd "sudo systemctl disable --now containerd.service || true"
|
||||
|
||||
sudo systemctl enable --now docker.service || true
|
||||
sudo systemctl enable --now containerd.service || true
|
||||
fi
|
||||
}
|
||||
|
||||
# ─── Main ─────────────────────────────────────────────────────────────
|
||||
|
||||
main() {
|
||||
install_docker
|
||||
|
||||
echo
|
||||
log_success "Docker installation and configuration complete."
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -4,6 +4,7 @@ declare -A INSTALLERS=(
|
||||
[agy]="Antigravity CLI"
|
||||
[asciicinema]="asciinema terminal recorder"
|
||||
[bat]="Bat (alternative to cat) and configure alias"
|
||||
[docker]="Container runtime and orchestration platform"
|
||||
[node]="Node.js (LTS) and NVM"
|
||||
[nvim]="Neovim 0.12.0 and configuration"
|
||||
[pnpm]="pnpm package manager"
|
||||
@@ -19,6 +20,7 @@ declare -A INSTALLER_DISPLAYS=(
|
||||
[agy]="Antigravity"
|
||||
[asciicinema]="asciicinema"
|
||||
[bat]="Bat"
|
||||
[docker]="Docker"
|
||||
[node]="Node"
|
||||
[nvim]="Neovim"
|
||||
[pnpm]="Pnpm"
|
||||
@@ -30,4 +32,4 @@ declare -A INSTALLER_DISPLAYS=(
|
||||
[zoxide]="Zoxide"
|
||||
)
|
||||
|
||||
INSTALLER_KEYS=(agy asciicinema bat node nvim pnpm rust starship uv yay yazi zoxide)
|
||||
INSTALLER_KEYS=(agy asciicinema bat docker node nvim pnpm rust starship uv yay yazi zoxide)
|
||||
|
||||
Reference in New Issue
Block a user