当前位置: 首页 > news >正文

综合实战(volume and Compose)

"让我,重获新生~" 


MySQL 灾难恢复 

        熟练掌握挂载卷的使用,将Mysql的业务数据存储在 外部。

实战思想:

        使用 MySQL 5.7 的镜像创建容器并创建一个普通数据卷 "mysql-data"用来保存容器中产生的数据。我们需要容器连接到Mysql服务,并且创建数据库test,并在该数据库中创建一个表来插入一些简单的数据信息。        

        准备镜像:

docker pull mysql:5.7

        创建容器:

注:-e 选项通过参数 MYSQL_ROOT_PASSWORD 来传递 MySQL 密码

docker container run --name mysql -itd -e MYSQL_ROOT_PASSWORD=wgzzs@123 -v/data/var/mysqld/:/var/lib/mysql mysql:5.7
        查看容器挂载信息:

        连接 MySQL shell, 创建数据库:

        接下来就是建表和插入数据的过程,这里不细讲:

        在宿主机中查看 volume:

        可以看到容器中 MySQL 创建的数据库和表数据以及持久化到宿主机挂载的目录下了。

        突然,有一天咱们机器的系统资源吃紧,变得缓慢。一个哥们脑子发抽,将Mysql服务停掉并删除了:

        不过好在,我们将容器内MySQL的数据做了绑定卷,它的数据还在宿主机上。我们现在要做的就是进行数据恢复。

        我们再次启动我们的运行命令,确保目录映射一致就能找回我们的数据了:

        成功登录Mysql数据后,我们进入test库中,查询表信息:

        数据仍然是存在的!

Docker Compose 部署自定义服务

        我们编写一个简单的案例: nginx 反向代理到我们的一个 springboot 微服务,微服务访问我们的 msyql 数据库查询用户信息。

springboot简介

        Spring Boot是一个开源的Java框架,它使得开发人员能够快速搭建和运行基于Spring的应用程序。

特征:

🥏 SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。

🥏 使编码变得简单,提供了大量的注解,极大的提高了工作效率。

🥏 自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。

🥏使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.         出自这里

        创建一个 springboot 应用,配置 maven 项目:

         有一些Idea中没有集成Spring initializr,可以访问官网。登录该网站,填写项目信息,选择依赖后,点击 Generate Project。

        解压生成的压缩包,使用Idea打开项目文件,点击右侧Mavn菜单栏,双击clean清理没问题,工程成功。

        点击package,我们发现也能正常打包:

        最终我们是要去访问机器上的Mysql,所以我们就要开始配置它的用户名和密码。

        配置Mysql的依赖驱动:

        在属性文件中,配置数据源(Mysql用户名和密码):

        编写一个简单的user控制类:

         回到main类后,点击启动我们的服务在8080号端口,该Web能够在本地运行。

        编写yml文件:

version: "3.8"
services:web:image: 1.24.0ports: - 8080:80networks: - mywebvolumes: - /data/nginx/conf.d:/etc/nginx/conf.d # 这里我们会更改配置文件的 启用反向代理depends_on: mysys: condition: service_startedmysys:image: java:8depends_on: mysql: condition: service_healthycommand: java -jar /app/demojdbc-0.0.1-SNAPSHOT.jar # 编译项目volumes: - /data/app/:/app/networks: - mywebmysql:image: mysql:5.7volumes:- /data/mysql/varlib/:/var/lib/mysql- /data/mysql/init/:/docker-entrypoint-initdb.d/environment: MYSQL_ROOT_PASSWORD: wgzzs@123healthcheck: test: mysql --user=root --password='root' -e "SELECT 1;"interval: 10stimeout: 5sretries: 10networks: - mywebnetworks: myweb: 

        我们需要通过将访问nginx服务的流量,转打给正在运行的Web Java程序。

        创建工程目录和卷目录:
        将 nginx 的反向代理配置 bit.conf 放入到 ./nginx/conf.d ,其中内容为:  

        将数据库初始化文件 init.sql 放入到./mysql/init 目录:

drop database if exists test;
CREATE DATABASE test DEFAULT CHARACTER SET utf8;
use test;
CREATE TABLE users (sno int(11) DEFAULT NULL,sname varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;INSERT INTO users values (1,'Bob'),(2,'Linda')

 

        将应用 jar 包放入到./app 目录:

        启动我们的项目:

         我们可以在Mysql中查询到被插入的数据:

                

Docker Compose 部署 WordPress

WordPress简介

        WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统来使用。

        WordPress 有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,你一定需要具备前端技术的支持。

        拉取WordPress镜像:

docker pull wordpress:4.5-fpm

        当然这一步可以不做,因为后面执行.yml文件时,会自动拉取。

        部署 WordPress:

# 定义所有services信息
version: "3.8"
services:mysql:image: mysql:5.7volumes:- /root/wordpress/var/mysql/data/:/var/lib/mysql# 定义容器重启策略restart: always# 设置环境变量environment:MYSQL_ROOT_PASSWORD: mywordpress123MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresshealthcheck:test: mysql --user=root --password='mywordpress123' -e "SELECT 1;"interval: 10stimeout: 5sretries: 10wordpress:image: wordpress:latest# 构建依赖顺序,Mysql先启动depends_on:mysql:condition: service_healthy# 建立映射关系ports:- "8080:80"restart: alwaysvolumes:- /root/wordpress/var/www/html/:/var/www/htmlenvironment:WORDPRESS_DB_HOST: mysql:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpress

        使用 docker compose config检查yml格式:

        运行站点:
docker compose up -d

        访问 web 页面:

        配置参数,点击安装:

        进入后台:

        删除,释放空间:


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

http://www.lryc.cn/news/307722.html

相关文章:

  • 国际黄金价格要具体市况具体分析
  • 【python】0、超详细介绍:json、http
  • 可观测性在威胁检测和取证日志分析中的作用
  • win32com打开带密码excel
  • IntelliJ IDEA 的常用快捷键
  • C语言统计成绩
  • LVS做集群四层负载均衡的简单理解
  • 2.1_6 线程的实现方式和多线程模型
  • 4.5 MongoDB 文档存储
  • 什么是服务级别协议(SLA)?
  • 使用Python进行Sentinel-2 图像聚类
  • SNZ资本的首席信息官Gavin确认出席Hack .Summit() 2024香港开发者大会!
  • js里面有引用传递吗?
  • C 语言 math.h 库介绍
  • Eigen-Matrix矩阵
  • 蓝桥杯14届计算思维国赛U8组包含真题和答案
  • opencv内存溢出del释放变量 (python)
  • 【算法与数据结构】复杂度深度解析(超详解)
  • Upload-Labs-Linux1【CTF】
  • 搜维尔科技:OptiTrack 提供了性能最佳的动作捕捉平台
  • java设计模式之职责链模式
  • 连不上网的解决办法集--持续更新
  • Unity之PUN2插件实现多人联机射击游戏
  • 72_Pandas.DataFrame保存并读取带pickle的系列(to_pickle、read_pickle)
  • Redis哨兵模式和Redis Cluster模式
  • C语言第三十二弹---自定义类型:联合和枚举
  • milvus upsert流程源码分析
  • QT网络通信
  • 案例分析|山西某光伏发电站轨道巡检机器人解决方案
  • Apache POl