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

简介: 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

二、删除已构建的docker项目

删除之前的容器镜像

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

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

删除

docker-compose -p mwj down -v
docker ps 
docker volume ls #查看卷
docker volume prune #删除卷
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#

运行start.sh

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

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

运行完之后

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# 
相关文章
|
3月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1368 4
|
3月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
181 5
|
4月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
358 12
docker 部署 sftp
|
3月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1000 7
|
3月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
2426 8
|
3月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
632 4

热门文章

最新文章