Files
LiteOps/start-containers.sh
2025-06-12 16:48:37 +08:00

106 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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}"