#!/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' 查看所有实例状态"