Skip to content

Instantly share code, notes, and snippets.

@WaltXin
Created August 16, 2025 03:24
Show Gist options
  • Save WaltXin/2b727c6e249100168332ce5879cfcd34 to your computer and use it in GitHub Desktop.
Save WaltXin/2b727c6e249100168332ce5879cfcd34 to your computer and use it in GitHub Desktop.
prepare insforge ec2
#!/usr/bin/env bash
# prepare_env.sh — Prepare prerequisites for your init.sh on Amazon Linux 2023
# Works for: al2023-ami-2023.8.20250808.1-kernel-6.1-x86_64
set -euo pipefail
log(){ echo -e "[$(date +'%F %T')] $*"; }
log "[0] 清理可能干扰的第三方 Docker 仓库(如果有)..."
sudo rm -f /etc/yum.repos.d/docker-ce.repo || true
log "[1] 刷新软件源缓存..."
sudo dnf clean all -y || true
sudo dnf makecache -y || true
# 说明:AL2023 默认带的是 curl-minimal,不要额外装 curl 以免与 curl-minimal 冲突
log "[2] 安装基础工具(git + dnf 插件)..."
sudo dnf install -y git dnf-plugins-core || true
log "[3] 安装 Docker Engine(优先官方包名 docker,失败则回退 moby-* 组合)..."
set +e
sudo dnf install -y docker
rc=$?
set -e
if [ $rc -ne 0 ]; then
log " 'docker' 包不可用,改装 moby-engine/moby-cli/containerd/runc ..."
sudo dnf install -y moby-engine moby-cli containerd runc
fi
log "[4] 启动并设为开机自启 Docker..."
sudo systemctl enable --now docker
log "[5] 创建 docker 组(如无)并将 ec2-user 加入..."
if ! getent group docker >/dev/null 2>&1; then
sudo groupadd docker
fi
sudo usermod -aG docker ec2-user
# 先检测插件式 docker compose 是否就绪(有的仓库会随 docker 一起提供)
COMPOSE_CMD="docker compose"
if ! $COMPOSE_CMD version >/dev/null 2>&1; then
log "[6] 'docker compose' 插件不可用,安装独立版 docker-compose(二进制)兜底..."
# 使用系统自带 curl(通常是 curl-minimal),避免与 curl 包冲突
sudo curl -L "https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
COMPOSE_CMD="docker-compose"
else
# 可选:给 docker-compose 做个别名软链,兼容你的 init.sh(它用的是 docker-compose)
if ! command -v docker-compose >/dev/null 2>&1; then
sudo ln -sf /usr/bin/docker /usr/bin/docker-compose || true
fi
fi
log "[7] 验证安装..."
sudo docker version
sudo docker info || true
# 两种 compose 兼容性验证
if [ "$COMPOSE_CMD" = "docker compose" ]; then
docker compose version
else
docker-compose version
fi
log "✅ 前置环境准备完成!现在可以运行你的 init.sh 了。"
log " 注意:你在 init.sh 里使用了 'sudo -u ec2-user docker-compose up -d'。"
log " 由于已将 ec2-user 加入 docker 组,新建的登录会话会自动生效;"
log " 但在当前会话里首次启动建议用:sudo docker-compose up -d(或 sudo docker compose up -d)。"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment