• 从零开始 - Docker部署前后端分离项目(四)


    一、start.sh的编写

    #! /bin/bash
    
    project=mwj
    
    delete(){
        # 删除操作
        echo "开始删除项目"
        echo "删除项目只会删除容器,不会删除卷"
        echo "要删除数据卷请手动删除"
        docker-compose -p $project down
    }
    
    deploy(){
        # 部署操作
        echo "开始部署项目"
        echo "注意重新部署项目会重新构建镜像!"
        docker-compose -p $project ps | grep -E "${project}_.*" &> /dev/null
        if (($?==0))
        then
            echo "已存在项目${project}!"
            read -p "要重新部署项目吗?(y/n)" confirm
            if [[ $confirm == "y" ]]
            then
                delete
                docker-compose -p $project up -d --build
            fi
        else
            docker-compose -p $project up -d --build
        fi
        
    }
    
    restart(){
        # 重启操作
        echo "开始重启项目"
        docker-compose -p $project ps | grep -E "${project}_.*" &> /dev/null
        if (($?!=0))
        then
            echo "不存在项目${project}"
        else
            docker-compose -p $project restart
        fi
        
    }
    
    close(){
        echo "开始暂停项目"
        docker-compose -p $project stop
    }
    
    
    
    start(){
        while true
        do
            echo "小仔自动化测试平台部署系统"
            select name in "部署项目" "重启项目" "暂停项目" "删除项目" "退出菜单"
            do 
                case $name in
                    "部署项目")
                        deploy
                        break
                        ;;
                    "重启项目")
                        restart
                        break
                        ;;
                    "暂停项目")
                        close
                        break
                        ;;
                    "删除项目")
                        delete
                        break
                        ;;
                    "退出菜单")
                        break
                        ;;
                 esac
             done
             if [ $name = "退出菜单" ]; then
                 break
             fi
        done
        
    
    }
    
    start
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89

    二、删除已构建的docker项目

    删除之前的容器镜像

    连名带卷删除容器 docker-compose -p mwj down -v

    -p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
    up 启动服务
    -d:在后台运行服务容器;
    build 构建(重新构建)项目中的服务容器
    down 停止容器
    -v:打印版本信息并退出。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    删除

    docker-compose -p mwj down -v
    docker ps 
    docker volume ls #查看卷
    docker volume prune #删除卷
    
    • 1
    • 2
    • 3
    • 4
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker-compose -p mwj down -v
    Stopping mwj_nginx_1      ... done
    Stopping mwj_django_app_1 ... done
    Stopping mwj_mariadb_1    ... done
    Stopping mwj_redis_1      ... done
    Removing mwj_nginx_1      ... done
    Removing mwj_django_app_1 ... done
    Removing mwj_mariadb_1    ... done
    Removing mwj_redis_1      ... done
    Removing network mwj_default
    Removing volume mwj_redis_data
    Removing volume mwj_mariadb_data
    Removing volume mwj_app_logs
    Removing volume mwj_nginx_logs
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker ps -a
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker volume ls
    DRIVER    VOLUME NAME
    local     5edf2c1082976dc0ddbc9f3149a156eede692b71a0254fe707cd6e7712769b93
    local     c6e344fd8b2e445e7aca8315bce06335f1bbd45e36c237d62532112e6ea285d0
    local     django_logs
    local     mariadb_data
    local     nginx_logs
    local     redis_data
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker volume prune
    WARNING! This will remove all local volumes not used by at least one container.
    Are you sure you want to continue? [y/N] y
    Deleted Volumes:
    5edf2c1082976dc0ddbc9f3149a156eede692b71a0254fe707cd6e7712769b93
    nginx_logs
    c6e344fd8b2e445e7aca8315bce06335f1bbd45e36c237d62532112e6ea285d0
    mariadb_data
    redis_data
    django_logs
    
    Total reclaimed space: 212MB
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker volume ls
    DRIVER    VOLUME NAME
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    运行start.sh

    chmod  777 start.sh
    ./strat.sh 
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# ./start.sh
    小仔自动化测试平台部署系统
    1) 部署项目
    2) 重启项目
    3) 暂停项目
    4) 删除项目
    5) 退出菜单
    #? 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    选择对应的选项即可自动部署

    运行完之后

    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker ps -a
    CONTAINER ID   IMAGE             COMMAND                  CREATED       STATUS       PORTS                                                                          NAMES
    215336c6a95f   mwj_nginx         "/docker-entrypoint.…"   2 hours ago   Up 2 hours   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp   mwj_nginx_1
    b3e570ceb947   mwj_android_pla   "./entrypoint.sh"        2 hours ago   Up 2 hours   8000/tcp                                                                       mwj_android_pla_1
    7bcec1565705   mariadb           "docker-entrypoint.s…"   2 hours ago   Up 2 hours   3306/tcp                                                                       mwj_mariadb_1
    e1f1e6f5dd4e   redis:alpine      "docker-entrypoint.s…"   2 hours ago   Up 2 hours   6379/tcp                                                                       mwj_redis_1
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# docker images
    REPOSITORY        TAG          IMAGE ID       CREATED       SIZE
    mwj_nginx         latest       17de390fa2d7   2 hours ago   42.2MB
    mwj_android_pla   latest       fee44cdcedc3   2 hours ago   273MB
    nginx             alpine       f246e6f9d0b2   2 weeks ago   23.5MB
    redis             alpine       f934e82c14d1   3 weeks ago   28.4MB
    mariadb           latest       ea81af801379   4 weeks ago   383MB
    python            3.8-alpine   926e859df334   4 weeks ago   46.8MB
    root@iZuf65o6jbmtrat2vx6hciZ:~/AndroidPlatform# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    1.9.C++项目:仿muduo库实现并发服务器之Connection模块的设计
    el-table(vue2中)滚动条被固定列盖住
    从云原生到数字原生,数字化转型背后的需求逻辑发生哪些变化?
    httprunner3.x总结24 - hrun3常见的测试前置、测试后置处理
    孙宇晨:区块链行业势必迎来光明的未来
    项目经理之如何组建跨部门项目团队
    剪绳子(进阶版)
    阿里云新品云服务器实例,经济型e实例,价格便宜,性价比高
    iOS小技能:SKU视图搭建
    普洛斯荣获两项“数据中心绿色等级评估”5A级认证
  • 原文地址:https://blog.csdn.net/qq_46158060/article/details/126051504