综合实战(volume and Compose)

news2024/11/18 21:41:49

"让我,重获新生~" 


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.0
    ports: 
      - 8080:80
    networks: 
      - myweb
    volumes: 
      - /data/nginx/conf.d:/etc/nginx/conf.d # 这里我们会更改配置文件的 启用反向代理
    depends_on: 
      mysys: 
        condition: service_started
  
  mysys:
    image: java:8
    depends_on: 
      mysql: 
        condition: service_healthy
    command: java -jar /app/demojdbc-0.0.1-SNAPSHOT.jar # 编译项目
    volumes: 
      - /data/app/:/app/
    networks: 
      - myweb

  mysql:
    image: mysql:5.7
    volumes:
      - /data/mysql/varlib/:/var/lib/mysql
      - /data/mysql/init/:/docker-entrypoint-initdb.d/
    environment: 
      MYSQL_ROOT_PASSWORD: wgzzs@123
    healthcheck: 
      test: mysql --user=root --password='root' -e "SELECT 1;"
      interval: 10s
      timeout: 5s
      retries: 10
    networks: 
      - myweb

networks: 
  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.7
    volumes:
      - /root/wordpress/var/mysql/data/:/var/lib/mysql
    # 定义容器重启策略
    restart: always
    # 设置环境变量
    environment:
      MYSQL_ROOT_PASSWORD: mywordpress123
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    healthcheck:
      test: mysql --user=root --password='mywordpress123' -e "SELECT 1;"
      interval: 10s
      timeout: 5s
      retries: 10

  wordpress:
    image: wordpress:latest
    # 构建依赖顺序,Mysql先启动
    depends_on:
      mysql:
        condition: service_healthy
    # 建立映射关系
    ports:
      - "8080:80"
    restart: always
    volumes:
      - /root/wordpress/var/www/html/:/var/www/html
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress

        使用 docker compose config检查yml格式:

        运行站点:
docker compose up -d

        访问 web 页面:

        配置参数,点击安装:

        进入后台:

        删除,释放空间:


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

祝你好运,向阳而生~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧公厕:打造智慧城市环境卫生新标杆

随着科技的不断发展和城市化进程的加速推进,智慧城市建设已经成为各地政府和企业关注的焦点。而作为智慧城市环境卫生管理的基础设施,智慧公厕的建设和发展也备受重视,被誉为智慧城市的新标杆。本文以智慧公厕源头厂家广州中期科技有限公司&a…

OpenAI要为GPT-4解决数学问题了:奖励模型指错,解题水平达到新高度

原文:OpenAI要为GPT-4解决数学问题了:奖励模型指错,解题水平达到新高度 - 知乎 对于具有挑战性的 step-by-step 数学推理问题,是在每一步给予奖励还是在最后给予单个奖励更有效呢?OpenAI 的最新研究给出了他们的答案。…

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法,它能够同时进行变量选择和正则化,以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …

前后端延迟怎么解决

当今互联网应用的发展越来越迅猛,用户对于网站或应用的性能要求也越来越高。其中一个重要方面就是前后端延迟的解决,也就是减少前端与后端之间的通信时间延迟,提高用户体验。本文将详细介绍如何解决前后端延迟的问题。 网络延迟 数据在网络…

springboot项目中使用mybatis作为数据查询框架,如何实现查询sql的日志打印输出?

在Spring Boot项目中使用MyBatis作为数据查询框架时,可以通过配置日志记录器来实现SQL查询的日志打印输出。MyBatis支持多种日志框架,如SLF4J、Log4j2等。这里介绍几种常见的配置方法: 1. 使用application.properties或application.yml配置 …

如何开通微信小程序商城

微信小程序店铺是一种新型的线上商城,可以帮助商家快速搭建自己的线上销售平台,吸引更多的用户进行购买。作为小程序服务商,我们可以帮助商家开通微信小程序店铺,提升他们的线上销售业绩。 1. 进入采云小程序。进入采云小程序首页…

skiplist(高阶数据结构)

目录 一、概念 二、实现 三、对比 一、概念 skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》 skiplist本质上是一种查找结构,用于解决算法中的查找问题,…

ntp时钟服务安装- 局域网节点时间同步

场景: 一般部署大数据相关应用服务,各个节点之间需要时间同步;内网情况下,很可能各节点之前时间可能不一致,或者过一段时间后 又不一致了 ntp 时钟服务器: 可用于内网各个节点之前得时间同步,安…

C#理论 —— 基础语法、数据类型、变量、常量、运算符、三大结构

文章目录 1. 基础语法1.1 标识符命名规则1.2 C# 关键字1.3 C#注释 2. 数据类型2.1 值类型(Value types)2.2 引用类型(Reference types)2.2.1 对象(Object)类型3.2.2 动态(Dynamic)类…

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差,可以参考,ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境,我的话大概就以下内容,后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

【踩坑】PyTorch中指定GPU不生效和GPU编号不一致问题

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 指定GPU不生效问题 解释:就是使用os.environ["CUDA_VISIBLE_DEVICES"] "1"后,后面使用起来仍然是cuda0. 解决:在最开头就使用 import os os.environ[&…

【MySQL | 第一篇】undo log、redo log、bin log三者之间的区分?

undo log、redo log、bin log三者之间的区分? 从 产生的时间点、日志内容、用途 三方面展开论述即可 1.undo log——撤销日志 时间点:事务开始之前产生,根据当前版本的数据生成一个undo log,也保存在事务开始之前 作用&#xf…

springboot+vue网站开发-渲染前端列表页面-缩略图信息

springbootvue网站开发-渲染前端列表页面-缩略图信息!内容比较多。这是第一篇,先给大家展示的是,基础的代码封装,vue前端网站模块的代码展示。 我们使用到了pinia-存储我们请求过来的数据,它是一个状态管理&#xff0c…

非线性优化-高斯牛顿法

在SLAM领域,后端多采用基于非线性优化的方法,来优化位姿和地图点,其中高斯牛顿法的使用频率很高。 求解高斯牛顿法的核心公式: 其中 f 是误差函数,J是误差关于待优化变量的雅可比矩阵。 其中H为海森矩阵&#xff08…

RRT算法学习及MATLAB演示

文章目录 1 前言2 算法简介3 MATLAB实现3.1 定义地图3.2 绘制地图3.3 定义参数3.4 绘制起点和终点3.5 RRT算法3.5.1 代码3.5.2 效果3.5.3 代码解读 4 参考5 完整代码 1 前言 RRT(Rapid Random Tree)算法,即快速随机树算法,是LaVa…

C语言第三十二弹---自定义类型:联合和枚举

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、联合体 1.1、联合体类型的声明 1.2、联合体的特点 1.3、相同成员的结构体和联合体对比 1.4、联合体大小的计算 1.5、联合的⼀个练习 2、枚举类型 …

176基于matlab的自适应滤波法预测

基于matlab的自适应滤波法预测,自适应滤波预测实质上是一种加权滑动平均预测,通过迭代得到最佳权值,并给出了相对误差图和预测效果图,程序已调通,可直接运行。 176matlab自适应滤波法预测 时间序列预测 (xiaohongshu.c…

51单片机(6)-----直流电机的介绍与使用(通过独立按键控制电机的运行)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 直流电机模块介绍 1.直流电机介绍 2.电机参数 二. 程序设计…

java线程池原理源码解析,程序员如何技术划水

前言 面试大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识)分为MySQLJavaRedis算法网络Linux等六类,接下…

2024-02-28(Kafka,Oozie,Flink)

1.Kafka的数据存储形式 一个主题由多个分区组成 一个分区由多个segment段组成 一个segment段由多个文件组成(log,index(稀疏索引),timeindex(根据时间做的索引)) 2.读数据的流程 …