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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 从零开始 - Docker部署前后端分离项目(四)

文章目录

一、start.sh的编写

二、删除已构建的docker项目

删除之前的容器镜像

运行start.sh


一、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# 
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
39 23
|
7天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
41 22
|
10天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
52 25
|
22天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
11天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
|
1月前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
59 3
实战~如何组织一个多容器项目docker-compose
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
45 2
|
5月前
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
运维 Kubernetes 前端开发
【云原生】阿里云服务器部署 Docker Swarm集群
阿里云服务器 一键部署 Docker Swarm 集群!
711 0
【云原生】阿里云服务器部署 Docker Swarm集群
|
弹性计算 数据可视化 关系型数据库
使用阿里云部署基于docker的mysql云服务
本篇文章将介绍如何使用阿里云安装docker、部署mysql服务,并远程连接至远端mysql
718 1
使用阿里云部署基于docker的mysql云服务

热门文章

最新文章