120 lines
3.6 KiB
Bash
120 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
# ------------------------------
|
|
# 配置区(根据实际修改)
|
|
# ------------------------------
|
|
DRONE_HOST="http://100.78.212.75:4010" # Drone 访问域名
|
|
GITEA_SERVER="http://100.78.212.75:3000" # Gitea 地址
|
|
GITEA_CLIENT_ID="1a1da8e3-7425-4e98-92a2-6c2b7d0819d1" # Gitea OAuth2 Client ID
|
|
GITEA_CLIENT_SECRET="gto_axhtqnuj36gvss5dbfx2vem2hcbhxho4jprqrlatjyk2i2ylgeoq" # Gitea OAuth2 Client Secret
|
|
POSTGRES_CONN="postgres://postgres:hsc1825713423@100.78.212.75:5432/drone?sslmode=disable" # 数据库连接
|
|
REDIS_ADDR="100.78.212.75:6379" # Redis 地址
|
|
REDIS_PASSWORD="hsc1825713423" # Redis 密码
|
|
INSTALL_DIR="/opt/drone" # 安装目录
|
|
|
|
# 国内镜像代理地址(可根据需要更换)
|
|
DOCKER_PROXY="docker.m.daocloud.io"
|
|
|
|
# ------------------------------
|
|
# 自动生成密钥
|
|
# ------------------------------
|
|
DRONE_RPC_SECRET=$(openssl rand -hex 16)
|
|
|
|
# ------------------------------
|
|
# 清理之前的安装
|
|
# ------------------------------
|
|
echo "🧹 清理之前的 Drone 安装..."
|
|
docker-compose down &> /dev/null || true
|
|
docker rm -f drone-server &> /dev/null || true
|
|
rm -rf "$INSTALL_DIR"
|
|
mkdir -p "$INSTALL_DIR"
|
|
echo "✅ 已清理之前的安装。"
|
|
|
|
# ------------------------------
|
|
# 创建 docker-compose.yml 文件
|
|
# ------------------------------
|
|
echo "📝 创建 docker-compose.yml 文件..."
|
|
cat > "$INSTALL_DIR/docker-compose.yml" <<EOF
|
|
version: '3'
|
|
|
|
services:
|
|
drone-server:
|
|
image: ${DOCKER_PROXY}/drone/drone:2
|
|
container_name: drone-server
|
|
environment:
|
|
- DRONE_GITEA_SERVER=$GITEA_SERVER
|
|
- DRONE_GITEA_CLIENT_ID=$GITEA_CLIENT_ID
|
|
- DRONE_GITEA_CLIENT_SECRET=$GITEA_CLIENT_SECRET
|
|
- DRONE_RPC_SECRET=$DRONE_RPC_SECRET
|
|
- DRONE_SERVER_HOST=$DRONE_HOST
|
|
- DRONE_SERVER_PROTO=http
|
|
- DRONE_DATABASE_DRIVER=postgres
|
|
- DRONE_DATABASE_DATASOURCE=$POSTGRES_CONN
|
|
- DRONE_REDIS_ADDR=$REDIS_ADDR
|
|
- DRONE_REDIS_PASSWORD=$REDIS_PASSWORD
|
|
volumes:
|
|
- drone-data:/var/lib/drone/
|
|
ports:
|
|
- "4010:80"
|
|
restart: always
|
|
|
|
volumes:
|
|
drone-data:
|
|
EOF
|
|
|
|
echo "✅ 已创建 docker-compose.yml 文件。"
|
|
|
|
# ------------------------------
|
|
# 配置 Docker 使用国内镜像加速
|
|
# ------------------------------
|
|
echo "🔧 配置 Docker 使用国内镜像加速..."
|
|
if ! grep -q "registry-mirrors" /etc/docker/daemon.json 2>/dev/null; then
|
|
cat > /etc/docker/daemon.json <<EOF
|
|
{
|
|
"registry-mirrors": [
|
|
"https://hub-mirror.c.163.com",
|
|
"https://mirror.baidubce.com",
|
|
"https://docker.m.daocloud.io"
|
|
]
|
|
}
|
|
EOF
|
|
systemctl daemon-reload
|
|
systemctl restart docker
|
|
echo "✅ 已配置 Docker 使用国内镜像加速。"
|
|
else
|
|
echo "⚠️ Docker 已配置镜像加速,跳过此步骤。"
|
|
fi
|
|
|
|
# ------------------------------
|
|
# 启动服务
|
|
# ------------------------------
|
|
echo "🚀 启动 Drone Server 服务..."
|
|
cd "$INSTALL_DIR"
|
|
docker-compose up -d
|
|
if [ $? -ne 0 ]; then
|
|
echo "❌ 启动 Drone Server 服务失败,请检查日志!"
|
|
exit 1
|
|
fi
|
|
|
|
# ------------------------------
|
|
# 验证安装
|
|
# ------------------------------
|
|
echo "🔍 检查服务状态..."
|
|
sleep 10
|
|
if docker ps | grep -q drone-server; then
|
|
echo "✅ Drone Server 服务已成功启动!"
|
|
else
|
|
echo "❌ Drone Server 服务启动失败,请检查以下日志:"
|
|
echo " docker logs drone-server"
|
|
exit 1
|
|
fi
|
|
|
|
# ------------------------------
|
|
# 输出信息
|
|
# ------------------------------
|
|
echo "✅ 安装完成!"
|
|
echo "📌 Drone 控制台: $DRONE_HOST"
|
|
echo "📌 RPC 密钥: $DRONE_RPC_SECRET (请妥善保存)"
|
|
echo "📌 管理命令:"
|
|
echo " docker-compose ps"
|
|
echo " docker logs drone-server" |