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