52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
|  | #!/bin/bash
 | ||
|  | 
 | ||
|  | # 检查参数 | ||
|  | if [ "$#" -lt 1 ]; then | ||
|  |     echo "使用方法: $0 <实例数量>" | ||
|  |     exit 1 | ||
|  | fi | ||
|  | 
 | ||
|  | # 实例数量 | ||
|  | NUM_INSTANCES=$1 | ||
|  | BASE_PORT=5088  # 从5088开始 | ||
|  | 
 | ||
|  | # 构建基础镜像 | ||
|  | echo "构建基础镜像..." | ||
|  | docker-compose build | ||
|  | 
 | ||
|  | # 停止并删除旧容器 | ||
|  | echo "清理旧容器..." | ||
|  | for ((i=1; i<=$NUM_INSTANCES; i++)) | ||
|  | do | ||
|  |     INSTANCE_NAME="stock-app-$i" | ||
|  |     docker stop $INSTANCE_NAME 2>/dev/null | ||
|  |     docker rm $INSTANCE_NAME 2>/dev/null | ||
|  | done | ||
|  | 
 | ||
|  | # 部署新实例 | ||
|  | echo "开始部署 $NUM_INSTANCES 个实例..." | ||
|  | for ((i=1; i<=$NUM_INSTANCES; i++)) | ||
|  | do | ||
|  |     INSTANCE_NAME="stock-app-$i" | ||
|  |     PORT=$((BASE_PORT + i - 1))  # 从5088开始递增 | ||
|  |     DATA_DIR="./instances/instance-$i" | ||
|  |      | ||
|  |     # 创建实例目录 | ||
|  |     mkdir -p "$DATA_DIR/logs" | ||
|  |     mkdir -p "$DATA_DIR/reports" | ||
|  |      | ||
|  |     echo "部署实例 $i: $INSTANCE_NAME 在端口 $PORT" | ||
|  |     docker run -d \
 | ||
|  |         --name $INSTANCE_NAME \
 | ||
|  |         -p $PORT:5000 \
 | ||
|  |         -v "$DATA_DIR/logs:/app/logs" \
 | ||
|  |         -v "$DATA_DIR/reports:/app/reports" \
 | ||
|  |         -e "FLASK_ENV=production" \
 | ||
|  |         -e "FLASK_APP=src/app.py" \
 | ||
|  |         -e "INSTANCE_ID=$i" \
 | ||
|  |         --restart unless-stopped \
 | ||
|  |         gpfx-app:latest | ||
|  | done | ||
|  | 
 | ||
|  | echo "全部实例已部署完成!" | ||
|  | echo "运行 'docker ps' 查看所有实例状态"  |