• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Docker容器部署Java项目的自动化脚本

    发布者: 涵韵 | 发布时间: 2025-6-17 08:13| 查看数: 60| 评论数: 0|帖子模式

    1. 服务部署过程

    先将Java项目在docker中部署的过程中所有命令列举
    命令均在jar包同级目录下进行执行

    1.1 移除旧jar包

    正常应该会在更新时覆盖,但还是执行以下删除操作
    1. rm -f app.jar
    复制代码
    1.2 jar包更新

    通过oss工具命令线上更新或者ftp工具上传更新
    这里使用oss工具(使用ftp工具上传可省略这一步更新操作)
    1. ossutil64 cp oss://sb-dev/sb_back/app.jar app.jar
    复制代码
    1.3 停止旧容器

    先停止原来的容器
    1. docker stop sb_back
    复制代码
    1.4 删除旧容器

    删除原来的容器
    1. docker rm sb_back
    复制代码
    1.5 删除旧镜像

    检索并删除原来的镜像
    1. docker rmi sb_back:20250327
    复制代码
    1.6 构建新镜像

    构建新的镜像
    1. docker build -t sb_back:20250327 .
    复制代码
    参数描述

    • build 构建命令
    • -t 打标签,TAG的缩写
    • sb_back:20250327 镜像名称和TAG
    • . 当前目录下

    1.7 运行新容器

    运行新的容器,自定义名称,指定端口映射
    1. docker run --name sb_back -p 3006:8089 -d --restart=always sb_back:20250326
    复制代码
    参数描述

    • run 运行容器命令
    • –name 定义容器名称,这里定为sb_back
    • -p 映射端口,将Java服务端口即容器端口映射到本机服务器向外暴露的端口(即后续访问该服务的真实端口)
    • -d 后台运行
    • –restart=always 容器运行失败会自动重启
    • sb_backDATE 镜像及TAG(使用指定镜像来运行容器)

    2. 创建shell脚本文件

    可以在本地创建后上传到服务器或者在服务器jar包同级目录创建

    2.1 本地创建并上传到服务器

    先在本地编辑(VSCode等编辑器创建一个sb_back.sh文件),将脚本内容粘贴进来并保存

    使用FTP工具或者oss工具上传
    1. ossutil64 cp oss://sb-dev/sb_back/sb_back.sh sb_back.sh
    复制代码
    注意,由于Windows和Linux换行符不同,脚本上传后执行可能会报错,可参考
    1. 4.3
    复制代码
    进行解决


    2.2 服务器中创建sh文件

    在jar包同级目录下创建名为sb_back.sh的文件
    1. mkdir sb_back.sh
    复制代码
    编辑文件
    1. vim sb_back.sh
    复制代码
    将脚本内容粘贴进来即可
    (
    1. i
    复制代码
    开启输入模式,
    1. esc
    复制代码
    推出输出模式,
    1. :wq
    复制代码
    保存并退出)

    3. 脚本内容

    将以上名命令整合到一起就是脚本执行的命令,完整内容如下

    3.1 简易脚本

    停止容器、移除原有容器和镜像,构建镜像并部署容器的脚本命令
    1. #!/bin/bash
    2. # 1. 停止并删除旧容器
    3. echo "Stopping and removing old container..."
    4. docker stop sb_back || true
    5. docker rm sb_back || true
    6. # 2. 删除旧镜像(可选,强制重新构建时使用)
    7. echo "Removing old image..."
    8. docker rmi $IMAGE_NAME || true
    9. # 3. 构建新镜像
    10. echo "Building new image..."
    11. docker build -t $IMAGE_NAME $DOCKERFILE_PATH
    12. docker build -t sb_back:20250327 .
    13. # 4. 运行新容器
    14. echo "Starting new container..."
    15. docker run -d --name sb_back -p 3006:8089 --restart=always sb_back:20250327
    16. echo "Deployment completed!"
    复制代码
    注:
    1. || true
    复制代码
    用于忽略未找到容器的错误

    3.2 升级脚本

    移除jar包,上传jar包,停止容器、移除容器和镜像、构建镜像和运行容器等命令整合
    并且将容器名镜像名等以变量的形式传入
    其中以时间变量作为镜像TAG
    1. #!/bin/bash
    2. # 定义当前日期,后续使用日期作为镜像TAG版本
    3. DATE=$(date +%Y%m%d)
    4. # 定义当前时间
    5. CURRENT_TIME=`date +'%Y%m%d_%H%M%S'`
    6. # 或者
    7. # CURRENT_TIME=(date +%Y%m%d_%H%M%S)

    8. # 输出当前时间内容
    9. echo "DATE = "$DATE
    10. echo "CURRENT_TIME = "$CURRENT_TIME

    11. # 0. 移除旧jar包,放入新的jar包
    12. echo "Removing jar and copy new jar..."
    13. rm -f app.jar
    14. ossutil64 cp oss://dev/3_JWH/01_SB_BACK/app.jar app.jar

    15. # 部署配置(根据实际情况修改)
    16. CONTAINER_NAME="sb_back"  # Docker容器名称
    17. IMAGE_TAG=$DATE
    18. IMAGE_NAME=$CONTAINER_NAME:$IMAGE_TAG      # Docker镜像名称
    19. # JAR_PATH="./target/*.jar"       # 生成的Jar包路径
    20. DOCKERFILE_PATH="."             # Dockerfile所在目录,jar包和dockerfile文件在同一位置
    21. PORT_MAPPING="3006:8089"        # 端口映射, Java服务端口8089映射到本机服务器3006,外部访问时访问的就是3006端口

    22. # 1. 停止并删除旧容器
    23. echo "Stopping and removing old container..."
    24. docker stop $CONTAINER_NAME || true
    25. docker rm $CONTAINER_NAME || true

    26. # 2. 删除旧镜像(可选,强制重新构建时使用)
    27. echo "Removing old image..."
    28. docker rmi $IMAGE_NAME || true

    29. # 3. 构建新镜像
    30. echo "Building new image..."
    31. docker build -t $IMAGE_NAME $DOCKERFILE_PATH

    32. # 4. 运行新容器
    33. echo "Starting new container..."
    34. docker run -d \
    35.   --name $CONTAINER_NAME \
    36.   -p $PORT_MAPPING \
    37.   --restart=always \
    38.   $IMAGE_NAME

    39. echo "Deployment completed!"
    复制代码
    4. 执行脚本


    4.1 检查脚本

    执行前可先检查以下脚本内容
    1. cat sb_back.sh
    复制代码


    4.2 执行脚本

    在脚本所在目录,执行命令
    1. sh sb_back.sh
    复制代码
    注意:由于Windows中的换行符和Linux环境中的有所不同,可能会导致sh脚本执行报错,如报错可参考下一步解决
    执行截图


    4.3 报错处理

    如果报错可先执行以下命令将替换Windows中的换行符为Linux的换行符
    1. sed -i 's/\r$//' your_script.sh
    复制代码
    更多解决方案参考文章:Docker构建镜像运行容器脚本出现换行符问题的解决

    5. 查看镜像

    执行脚本后,使用命令查看镜像是否更新
    1. docker images
    复制代码


    6. 查看容器

    查看容器是否已经创建并运行
    查看正在运行的容器
    1. docker ps
    复制代码

    以上就是Docker容器部署Java项目的自动化脚本的详细内容,更多关于Docker部署Java项目的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/server/338931g1s.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表