Created
August 16, 2025 03:24
-
-
Save WaltXin/2b727c6e249100168332ce5879cfcd34 to your computer and use it in GitHub Desktop.
prepare insforge ec2
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 | |
| # 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