• 实现脚本自动部署docker


    前言:

      使用场景是 我这边的一个单体项目需要多一个多副本的部署方式,一直输入重复命令我实在是嫌烦了,使用写了一个脚本来一键更新部署上去。jar包都是我手动上传的,没有把包传入公网库里。

     之所以记录就是因为遇到了几个没有遇到过的问题记录以下。

     示例:

    #!/bin/bash
    # 进入指定文件夹打包成image
    cd /soft/xx/xx/
    # 停止和删除包含 "mobile" 在名称中的容器
    docker ps | grep "mobile" | awk '{print $1}' | xargs docker stop
    docker rm m1
    docker rm m2
    docker rm m3
    # 构建 Docker 镜像并获取其 ID
    IMAGE_ID=$(docker build -t xxx:Tag . -q)
    # 使用镜像 ID 运行 Docker 容器
    docker run -d -p 0001:8080 --name mobile2 -v /opt/xx/:/opt/xx/ $IMAGE_ID
    docker run -d -p 0002:8080 --name mobile1 -v /opt/xx/:/opt/xx/ $IMAGE_ID
    docker run -d -p 0003:8080 --name mobile3 -v /opt/xx/:/opt/xx/ $IMAGE_ID
     
    省略每次输入 chmod +x script 这个命令,可以将脚本复制到一个在系统 PATH 中的目录中,这样就可以在任何地方执行它,而无需添加 ./ 前缀或手动更改权限。
    可以将脚本复制到 /usr/local/bin/ 目录中:
     
    sudo cp 脚本文件名 /usr/local/bin/
     
    然后就可以在任何地方都只需要输入 脚本名称就可以执行。

    错误一:-bash: /usr/local/bin/runpoject: Permission denied 没有权限的命令

    这个错误是由于权限问题引起的,它表示你没有足够的权限来执行 /usr/local/bin/runpoject 脚本。这是因为 /usr/local/bin 目录通常需要超级用户权限才能写入。

    你可以尝试以下步骤来解决这个问题:

    使用尝试使用以下命令:

     sudo chmod +x /usr/local/bin/script

    错误二:-bash: /usr/local/bin/runpoject: /bin/bash^M: bad interpreter: No such file or directory 转义符的原因
    这个错误消息表明你的脚本文件包含了 Windows 风格的换行符(\r\n),而不是 Linux 风格的换行符(\n)。这种问题可能会导致解释器无法找到正确的路径。

    要解决这个问题,你可以使用文本编辑器将脚本文件转换为 Linux 风格的换行符。

    你可以使用 dos2unix 命令来进行转换,如果系统没有安装这个命令,可以尝试使用 sed 命令来进行转换,如下所示:

    sed -i 's/\r$//' /usr/local/bin/script

    亲测可以解决问题。

  • 相关阅读:
    200道Java面试题
    WebAssembly之MuPDF的编译
    学会这 29 个 函数,你就是 Pandas 专家
    windows服务器下jenkins c语言打包的一些经验share
    读书记:认知觉醒(三)元认知、自控力
    【并联有源电力滤波器】基于pq理论的并联有源电力滤波器(Simulink)
    Go 之常用并发学习
    Springboot微服务之redis注册中心
    5.1 内存CRC32完整性检测
    解析Facebook对当代文化传播的影响力
  • 原文地址:https://www.cnblogs.com/del-x/p/17754666.html