docker更新jar包,懒人执行脚本

以下是一个用于启动 Docker 容器的脚本,适用于快速部署通过挂载方式运行的 JAR 应用,包含启动、停止、重启和查看状态等功能:

bash 复制代码
#!/bin/bash
# 完整重建Docker容器和镜像的脚本
# 流程:停止容器 → 删除镜像 → 删除容器 → 构建镜像 → 启动容器

# 配置参数
CONTAINER_NAME="back-service"  # 容器名称
IMAGE_NAME="back-service"          # 镜像名称
IMAGE_TAG="latest"                 # 镜像标签
DOCKERFILE_PATH="./"               # Dockerfile所在目录(当前目录为.)
# 容器端口
HOST_PORT=8881                     # 宿主机端口
CONTAINER_PORT=8881                # 容器端口

# 函数:停止容器
stop_container() {
    if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
        echo "正在停止容器 $CONTAINER_NAME..."
        docker stop $CONTAINER_NAME
        if [ $? -eq 0 ]; then
            echo "容器 $CONTAINER_NAME 已停止"
        else
            echo "停止容器 $CONTAINER_NAME 失败"
            exit 1
        fi
    else
        echo "容器 $CONTAINER_NAME 未在运行"
    fi
}

# 函数:删除容器
remove_container() {
    if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
        echo "正在删除容器 $CONTAINER_NAME..."
        docker rm $CONTAINER_NAME
        if [ $? -eq 0 ]; then
            echo "容器 $CONTAINER_NAME 已删除"
        else
            echo "删除容器 $CONTAINER_NAME 失败"
            exit 1
        fi
    else
        echo "容器 $CONTAINER_NAME 不存在"
    fi
}

# 函数:删除镜像
remove_image() {
    if [ "$(docker images -q $IMAGE_NAME:$IMAGE_TAG)" ]; then
        echo "正在删除镜像 $IMAGE_NAME:$IMAGE_TAG..."
        docker rmi $IMAGE_NAME:$IMAGE_TAG
        if [ $? -eq 0 ]; then
            echo "镜像 $IMAGE_NAME:$IMAGE_TAG 已删除"
        else
            echo "删除镜像 $IMAGE_NAME:$IMAGE_TAG 失败(可能被其他容器引用)"
            exit 1
        fi
    else
        echo "镜像 $IMAGE_NAME:$IMAGE_TAG 不存在"
    fi
}

# 函数:构建镜像
build_image() {
    echo "正在构建镜像 $IMAGE_NAME:$IMAGE_TAG..."
    docker build -t $IMAGE_NAME:$IMAGE_TAG $DOCKERFILE_PATH
    if [ $? -eq 0 ]; then
        echo "镜像 $IMAGE_NAME:$IMAGE_TAG 构建成功"
    else
        echo "镜像 $IMAGE_NAME:$IMAGE_TAG 构建失败"
        exit 1
    fi
}

# 函数:启动容器
start_container() {
    echo "正在启动容器 $CONTAINER_NAME..."
    docker run -d \
        --name $CONTAINER_NAME \
        -p $HOST_PORT:$CONTAINER_PORT \
        $IMAGE_NAME:$IMAGE_TAG
    if [ $? -eq 0 ] && [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
        echo "容器 $CONTAINER_NAME 启动成功"
        echo "访问地址: http://localhost:$HOST_PORT"
    else
        echo "容器 $CONTAINER_NAME 启动失败"
        exit 1
    fi
}




# 主流程执行
echo "===== 开始执行容器重建流程 ====="
stop_container
remove_container  # 先删除容器再删除镜像,避免镜像被占用
remove_image
build_image
start_container
echo "===== 容器重建流程执行完毕 ====="
相关推荐
java_logo5 分钟前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
MANONGMN15 分钟前
Linux 通配符与正则表达式(含实战案例+避坑指南)
linux·运维·正则表达式
勤源科技38 分钟前
运维知识图谱的构建与应用
运维·人工智能·知识图谱
jiyuzzz1 小时前
Docker部署WordPress及相关配置
运维·docker·容器
Micro麦可乐1 小时前
Centos Stream 9 中Docker安装出现 download.docker.com:443 的问题解决
linux·docker·centos·podman
LeeZhao@1 小时前
【具身智能】具身机器人VLA算法入门及实战(一):具身智能系统及VLA
人工智能·docker·语言模型·机器人
m0_719759222 小时前
Docker 常用命令
docker
风清再凯3 小时前
05-k8s网络
网络·容器·kubernetes
还不秃顶的计科生3 小时前
linux下conda未安装的解决方法(离线安装linux下的conda)
linux·运维·服务器
爱学习饼4 小时前
CentOS下安装配置JDK24和tomcat11
linux·运维·centos