百度deepseek满血模型的杰作

#!/bin/bash

# 参数检查

if [ $# -ne 1 ]; then

    echo "用法: $0 <镜像版本>"

    exit 1

fi

# 配置参数

IMAGE_NAME="xx.hub.cn/namespace/image_name"         # 镜像名称(按需修改)

CONTAINER_PATH="/data"   # 容器内文件路径(按需修改)

HOST_PATH="/home/deploy"         # 宿主机存储路径(按需修改)

APP_NAME="program_name"

PORTS=(8091 8092 8093 8094)

# 拉取镜像

VERSION=$1

FULL_IMAGE="${IMAGE_NAME}:${VERSION}"

echo "正在拉取镜像 ${FULL_IMAGE}..."

docker pull ${FULL_IMAGE} || {

    echo "镜像拉取失败";

    exit 1;

}

# 创建临时容器

CONTAINER_ID=$(docker create ${FULL_IMAGE}) || {

    echo "容器创建失败";

    exit 1;

}

# 创建宿主机目录

mkdir -p ${HOST_PATH}

# 执行文件拷贝

echo "正在拷贝文件..."

docker cp ${CONTAINER_ID}:${CONTAINER_PATH}/main.jar ${HOST_PATH}/${APP_NAME}.jar || {

    echo "文件拷贝失败";

    docker rm ${CONTAINER_ID} >/dev/null;

    exit 1;

}

# 清理临时容器

docker rm ${CONTAINER_ID} >/dev/null

echo "文件已拷贝至: ${HOST_PATH}"

echo "开始重启服务, ports: ${PORTS[@]}"

for port in "${PORTS[@]}"

do

    # 精确匹配进程(同时包含程序名和端口参数)‌

    PID=$(ps -ef | grep "java.*-jar.*$APP_NAME.*--server.port=$port" | grep -v grep | awk '{print $2}')

    

    # 停止已存在进程

    if [ -n "$PID" ]; then

        echo "Stopping $APP_NAME on port $port (PID:$PID)..."

        kill -9 $PID

        sleep 2  # 等待进程释放端口‌:ml-citation{ref="1" data="citationList"}

    fi

    # 启动新实例(带JVM基础参数)‌:ml-citation{ref="5" data="citationList"}

    nohup java -server -Dfile.encoding=utf-8 -XX:MaxDirectMemorySize=128m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xms3006477107 -Xmx3006477107 -Xss2048k -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+UseG1GC -Dlog4j2.formatMsgNoLookups=true -jar $HOST_PATH/$APP_NAME.jar --spring.profiles.active=test --server.port=$port --management.server.port=$port > $HOST_PATH/app_$port.log 2>&1 &

    # 状态验证

    sleep 1

    if ps -p $! > /dev/null; then

        echo "Successfully started $APP_NAME on port $port (PID:$!)"

    else

        echo "Failed to start instance on port $port"

        tail -n 20 $HOST_PATH/app_$port.log

        exit 1

    fi

done

echo "服务已启动, 端口: ${PORTS[@]}"

发表评论 / Comment

用心评论~