mirror of
https://github.com/opsre/LiteOps.git
synced 2026-03-05 05:20:46 +08:00
106 lines
2.7 KiB
Bash
Executable File
106 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[0;33m'
|
||
BLUE='\033[0;34m'
|
||
PURPLE='\033[0;35m'
|
||
CYAN='\033[0;36m'
|
||
NC='\033[0m' # 无颜色
|
||
|
||
# 设置变量
|
||
CONTAINER_IMAGE="liteops:v1"
|
||
CONTAINER_NAME="liteops"
|
||
MYSQL_CONTAINER="liteops-mysql"
|
||
MYSQL_VERSION="8"
|
||
MYSQL_PASSWORD="1234567xx"
|
||
MYSQL_PORT="3306"
|
||
NETWORK_NAME="liteops-network"
|
||
|
||
# 打印带颜色的信息
|
||
print_info() {
|
||
echo -e "${BLUE}[INFO]${NC} $1"
|
||
}
|
||
|
||
print_success() {
|
||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||
}
|
||
|
||
print_warning() {
|
||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||
}
|
||
|
||
print_error() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
print_step() {
|
||
echo -e "\n${PURPLE}=== $1 ===${NC}"
|
||
}
|
||
|
||
# 创建Docker网络(如果不存在)
|
||
print_step "创建Docker网络"
|
||
if ! docker network inspect $NETWORK_NAME >/dev/null 2>&1; then
|
||
print_info "创建Docker网络: $NETWORK_NAME"
|
||
docker network create $NETWORK_NAME
|
||
print_success "网络创建成功"
|
||
else
|
||
print_info "网络 $NETWORK_NAME 已存在,跳过创建"
|
||
fi
|
||
|
||
# 停止并删除已存在的容器
|
||
print_step "清理已存在的容器"
|
||
print_info "停止并删除已存在的容器..."
|
||
docker stop $CONTAINER_NAME $MYSQL_CONTAINER 2>/dev/null || true
|
||
docker rm $CONTAINER_NAME $MYSQL_CONTAINER 2>/dev/null || true
|
||
print_success "容器清理完成"
|
||
|
||
# 构建镜像
|
||
print_step "构建应用镜像"
|
||
print_info "构建LiteOps镜像..."
|
||
# 确保前端已经构建
|
||
if [ ! -d "web/dist" ]; then
|
||
print_error "前端dist目录不存在,请先运行 npm run build"
|
||
exit 1
|
||
fi
|
||
docker build --platform linux/amd64 -t $CONTAINER_IMAGE .
|
||
print_success "镜像构建成功: $CONTAINER_IMAGE"
|
||
|
||
# 启动MySQL容器
|
||
print_step "启动MySQL容器"
|
||
print_info "启动MySQL $MYSQL_VERSION 容器..."
|
||
docker run -d \
|
||
--name $MYSQL_CONTAINER \
|
||
--network $NETWORK_NAME \
|
||
-p $MYSQL_PORT:3306 \
|
||
-e MYSQL_ROOT_PASSWORD=$MYSQL_PASSWORD \
|
||
-e MYSQL_DATABASE=liteops \
|
||
mysql:$MYSQL_VERSION
|
||
|
||
# 等待MySQL启动
|
||
print_info "等待MySQL启动..."
|
||
sleep 10
|
||
|
||
# 初始化数据库
|
||
print_step "初始化数据库"
|
||
print_info "导入初始数据..."
|
||
docker exec -i $MYSQL_CONTAINER mysql -uroot -p$MYSQL_PASSWORD liteops < liteops_init.sql
|
||
print_success "数据库初始化完成"
|
||
|
||
# 启动应用容器
|
||
print_step "启动应用容器"
|
||
print_info "启动LiteOps容器(Docker in Docker模式)..."
|
||
docker run -d \
|
||
--name $CONTAINER_NAME \
|
||
--network $NETWORK_NAME \
|
||
--privileged \
|
||
-p 80:80 \
|
||
-p 8900:8900 \
|
||
$CONTAINER_IMAGE
|
||
|
||
print_step "部署完成"
|
||
print_success "LiteOps已成功部署!"
|
||
print_info "前端访问地址: ${CYAN}http://localhost${NC}"
|
||
print_info "后端API地址: ${CYAN}http://localhost:8900/api/${NC}"
|
||
print_info "MySQL端口映射: ${CYAN}$MYSQL_PORT${NC}" |