Files
cloud-browser/deploy.sh
T

127 lines
3.2 KiB
Bash

#!/usr/bin/env bash
#
# 云端浏览器一键部署脚本
# 安装路径: /opt/cloud-browser
# 运行用户: root
# 默认端口: 32450
# 默认账号: admin / admin
#
set -euo pipefail
INSTALL_DIR="/opt/cloud-browser"
REPO_URL="https://git.bz121.com/dekun/cloud-browser.git"
APP_PORT="32450"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
err() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
if [[ "$(id -u)" -ne 0 ]]; then
err "请使用 root 用户运行此脚本"
exit 1
fi
install_docker() {
if command -v docker &>/dev/null; then
log "Docker 已安装: $(docker --version)"
return
fi
warn "未检测到 Docker,正在安装..."
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
log "Docker 安装完成"
}
install_compose() {
if docker compose version &>/dev/null; then
log "Docker Compose 已就绪"
return
fi
err "Docker Compose 不可用,请手动安装后重试"
exit 1
}
clone_or_update() {
if [[ -d "${INSTALL_DIR}/.git" ]]; then
log "更新代码: ${INSTALL_DIR}"
git -C "${INSTALL_DIR}" pull --rebase
else
log "克隆代码到 ${INSTALL_DIR}"
mkdir -p "$(dirname "${INSTALL_DIR}")"
git clone "${REPO_URL}" "${INSTALL_DIR}"
fi
}
setup_env() {
cd "${INSTALL_DIR}"
if [[ ! -f .env ]]; then
cp .env.example .env
log "已创建 .env 配置文件"
fi
mkdir -p data
chmod 700 data
}
start_service() {
cd "${INSTALL_DIR}"
log "构建并启动容器..."
docker compose up -d --build
}
wait_health() {
local retries=30
log "等待服务启动..."
while [[ $retries -gt 0 ]]; do
if curl -sf "http://127.0.0.1:${APP_PORT}/api/health" &>/dev/null; then
log "服务已就绪"
return 0
fi
retries=$((retries - 1))
sleep 2
done
err "服务启动超时,请检查日志: docker compose -f ${INSTALL_DIR}/docker-compose.yml logs -f app"
exit 1
}
print_summary() {
local ip
ip=$(curl -s --max-time 3 ifconfig.me 2>/dev/null || hostname -I 2>/dev/null | awk '{print $1}' || echo "YOUR_SERVER_IP")
echo ""
echo "=========================================="
echo " 云端浏览器部署完成"
echo "=========================================="
echo " 访问地址: http://${ip}:${APP_PORT}"
echo " 默认账号: admin"
echo " 默认密码: admin"
echo " 安装目录: ${INSTALL_DIR}"
echo ""
echo " 登录后请立即修改用户名和密码"
echo " 反向代理请自行在宝塔/Nginx 中配置"
echo ""
echo " 常用命令:"
echo " 查看日志: cd ${INSTALL_DIR} && docker compose logs -f app"
echo " 重启服务: cd ${INSTALL_DIR} && docker compose restart"
echo " 停止服务: cd ${INSTALL_DIR} && docker compose down"
echo " 更新部署: bash ${INSTALL_DIR}/deploy.sh"
echo "=========================================="
}
main() {
log "开始部署云端浏览器..."
install_docker
install_compose
clone_or_update
setup_env
start_service
wait_health
print_summary
}
main "$@"