Last active
August 9, 2025 14:49
-
-
Save horacioibrahim/139380ffa0e6e485a03e0fb6e6750149 to your computer and use it in GitHub Desktop.
setup-docker.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # setup-docker.sh — Ubuntu (DigitalOcean) | |
| set -euo pipefail | |
| ADD_USER_TO_DOCKER="${ADD_USER_TO_DOCKER:-false}" | |
| SKIP_HELLO="${SKIP_HELLO:-false}" | |
| log(){ printf "\033[1;34m%s\033[0m %s\n" "›" "$*"; } | |
| ok(){ printf "\033[1;32m%s\033[0m %s\n" "✔" "$*"; } | |
| err(){ printf "\033[1;31m%s\033[0m %s\n" "✖" "$*" >&2; } | |
| require_root(){ [[ "${EUID:-$(id -u)}" -eq 0 ]] || { err "Execute como root: sudo $0"; exit 1; } } | |
| require_root | |
| log "Removendo instalações antigas (se houver)..." | |
| apt-get remove -y docker.io docker-doc docker-compose docker-compose-v2 containerd runc || true | |
| apt-get autoremove -y || true | |
| log "Atualizando pacotes..." | |
| apt-get update -y | |
| apt-get upgrade -y | |
| log "Instalando dependências..." | |
| apt-get install -y ca-certificates curl gnupg | |
| log "Configurando chave GPG e repositório oficial da Docker..." | |
| install -m 0755 -d /etc/apt/keyrings | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg | |
| chmod a+r /etc/apt/keyrings/docker.gpg | |
| UBUNTU_CODENAME="$(. /etc/os-release && echo "$VERSION_CODENAME")" | |
| echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu ${UBUNTU_CODENAME} stable" \ | |
| > /etc/apt/sources.list.d/docker.list | |
| log "Instalando Docker Engine + Buildx + Compose..." | |
| apt-get update -y | |
| apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | |
| log "Habilitando e iniciando serviço docker..." | |
| systemctl enable --now docker | |
| if [[ "$ADD_USER_TO_DOCKER" == "true" ]]; then | |
| TARGET_USER="${SUDO_USER:-$USER}" | |
| if id "$TARGET_USER" >/dev/null 2>&1; then | |
| log "Adicionando usuário '$TARGET_USER' ao grupo docker..." | |
| usermod -aG docker "$TARGET_USER" | |
| ok "Usuário adicionado (faça logout/login para aplicar)." | |
| else | |
| err "Usuário '$TARGET_USER' não encontrado; pulando." | |
| fi | |
| fi | |
| log "Versões instaladas:" | |
| docker --version || true | |
| docker compose version || true | |
| if [[ "$SKIP_HELLO" != "true" ]]; then | |
| log "Executando teste hello-world..." | |
| if docker run --rm hello-world >/dev/null 2>&1; then | |
| ok "hello-world executado com sucesso." | |
| else | |
| err "Falha ao rodar hello-world (sem internet/registry?)." | |
| fi | |
| fi | |
| ok "Docker instalado e ativo." | |
| # Redes | |
| docker network create agnostic_public || true | |
| docker network create agnostic_core || true | |
| docker network create agnostic_config || true | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment