AI改进了以下脚本: #!/bin/bash # 定义容器名称和镜像名称 CONTAINER_NAME="doube-itv" IMAGE_NAME="doubebly/doube-itv:latest" # 提示用户输入端口号 read -p "请输入主机端口号(例如 8080):" HOST_PORT # 检查端口号是否合法 if ! [[ $HOST_PORT =~ ^[0-9]+$ ]]; then echo "错误:端口号必须是数字。" exit 1 fi # 检查容器是否存在(无论是否运行) if docker ps -a -q -f name=$CONTAINER_NAME; then echo "容器 $CONTAINER_NAME 存在,检查是否正在运行..." # 检查容器是否正在运行 if docker ps -q -f name=$CONTAINER_NAME -f status=running; then echo "容器 $CONTAINER_NAME 正在运行,检查是否有新版本镜像..." # 获取当前运行的镜像 ID if ! CURRENT_IMAGE_ID=$(docker inspect --format '{{.Image}}' $CONTAINER_NAME 2>/dev/null); then echo "无法获取容器 $CONTAINER_NAME 的镜像 ID,可能容器已损坏或不存在。尝试强制删除并重新启动容器..." # 强制删除容器 echo "强制删除容器 $CONTAINER_NAME..." docker rm -f $CONTAINER_NAME || { echo "无法删除容器 $CONTAINER_NAME"; exit 1; } # 拉取最新镜像 echo "拉取最新镜像 $IMAGE_NAME..." docker pull $IMAGE_NAME || { echo "无法拉取镜像 $IMAGE_NAME"; exit 1; } # 启动新容器 echo "启动新容器 $CONTAINER_NAME,映射端口 $HOST_PORT:5000..." docker run -d --restart always -p $HOST_PORT:5000 --name $CONTAINER_NAME \ $IMAGE_NAME || { echo "无法启动容器 $CONTAINER_NAME"; exit 1; } echo "容器 $CONTAINER_NAME 已成功启动,端口 $HOST_PORT:5000。" exit 0 fi # 拉取最新镜像 echo "拉取最新镜像 $IMAGE_NAME..." docker pull $IMAGE_NAME || { echo "无法拉取镜像 $IMAGE_NAME"; exit 1; } # 获取最新镜像 ID LATEST_IMAGE_ID=$(docker images --quiet $IMAGE_NAME) # 比较镜像 ID if [[ $CURRENT_IMAGE_ID != $LATEST_IMAGE_ID ]]; then echo "发现新版本镜像,开始更新容器..." # 停止并删除旧容器 echo "停止容器 $CONTAINER_NAME..." docker stop $CONTAINER_NAME || { echo "无法停止容器 $CONTAINER_NAME"; exit 1; } echo "删除容器 $CONTAINER_NAME..." docker rm $CONTAINER_NAME || { echo "无法删除容器 $CONTAINER_NAME"; exit 1; } # 启动新容器 echo "启动新容器 $CONTAINER_NAME,映射端口 $HOST_PORT:5000..." docker run -d --restart always -p $HOST_PORT:5000 --name $CONTAINER_NAME \ $IMAGE_NAME || { echo "无法启动容器 $CONTAINER_NAME"; exit 1; } echo "容器 $CONTAINER_NAME 已成功更新,端口 $HOST_PORT:5000。" else echo "当前镜像已是最新版本,无需更新。" fi else echo "容器 $CONTAINER_NAME 存在但未运行,开始启动容器..." # 删除旧容器 echo "删除容器 $CONTAINER_NAME..." docker rm $CONTAINER_NAME || { echo "无法删除容器 $CONTAINER_NAME"; exit 1; } # 拉取最新镜像 echo "拉取最新镜像 $IMAGE_NAME..." docker pull $IMAGE_NAME || { echo "无法拉取镜像 $IMAGE_NAME"; exit 1; } # 启动容器 echo "启动容器 $CONTAINER_NAME,映射端口 $HOST_PORT:5000..." docker run -d --restart always -p $HOST_PORT:5000 --name $CONTAINER_NAME \ $IMAGE_NAME || { echo "无法启动容器 $CONTAINER_NAME"; exit 1; } echo "容器 $CONTAINER_NAME 已成功启动,端口 $HOST_PORT:5000。" fi else echo "容器 $CONTAINER_NAME 不存在,开始启动容器..." # 拉取最新镜像 echo "拉取最新镜像 $IMAGE_NAME..." docker pull $IMAGE_NAME || { echo "无法拉取镜像 $IMAGE_NAME"; exit 1; } # 启动容器 echo "启动容器 $CONTAINER_NAME,映射端口 $HOST_PORT:5000..." docker run -d --restart always -p $HOST_PORT:5000 --name $CONTAINER_NAME \ $IMAGE_NAME || { echo "无法启动容器 $CONTAINER_NAME"; exit 1; } echo "容器 $CONTAINER_NAME 已成功启动,端口 $HOST_PORT:5000。" fi echo "done, enjoy it."
@奇迹 #31 鸡腿奉上
感谢楼主让我看上了cctv1,鸡腿已奉上了
厉害,很有用
迟早玩挂
挺好的还挺快
@奇迹 #0
我试这个脚本更新,老是显示syntax error: unexpected end of file,佬,这是啥情况?
感谢大佬,鸡腿已送上
AI改进了以下脚本:
对部署的服务器有要求吗?带宽啥的
感谢大佬,鸡腿奉上,本来在用la1