当前位置: 首页 > 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 页面:

        配置参数,点击安装:

        进入后台:

        删除,释放空间:


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

祝你好运,向阳而生~

相关文章:

综合实战(volume and Compose)

"让我,重获新生~" MySQL 灾难恢复 熟练掌握挂载卷的使用,将Mysql的业务数据存储在 外部。 实战思想: 使用 MySQL 5.7 的镜像创建容器并创建一个普通数据卷 "mysql-data"用来保存容器中产生的数据。我们需要容器连接到Mysql服务&a…...

国际黄金价格要具体市况具体分析

国际黄金价格走势多变,投资者在参与的过程中要注意自己交易策略的灵活度,要做到具体市况具体分析,而且面对不同的市况,要采用不同的挂单方式,这样才能把握住更有利的入场时机。在大家常用的现货黄金交易软件MT4中&…...

【python】0、超详细介绍:json、http

文章目录 一、json二、http2.1 json 读取 request 序列化 三、基本类型3.1 decimal 四、图像4.1 颜色格式转换 一、json import json f open(data.json) # open json file data json.load(f) # 读出 json object for i in data[emp_details]: # 取出一级属性 emp_details, …...

可观测性在威胁检测和取证日志分析中的作用

在网络中,威胁是指可能影响其平稳运行的恶意元素,因此,对于任何希望避免任何财政损失或生产力下降机会的组织来说,威胁检测都是必要的。为了先发制人地抵御来自不同来源的任何此类攻击,需要有效的威胁检测情报。 威胁…...

win32com打开带密码excel

简单来说给excel上加密常见的方法有两种 方法一: 直接修改文件属性 这种方法对应的解法是 excel DispatchEx("Excel.Application") # 启动excel excel.Visible visible # 可视化 excel.DisplayAlerts displayalerts # 是否显示警告 wb excel.Wo…...

IntelliJ IDEA 的常用快捷键

IntelliJ IDEA 的常用快捷键非常多,这些快捷键可以帮助你更高效地编写代码。以下是一些常用的快捷键总结: 基础操作 CtrlN:查找类CtrlShiftN:查找文件CtrlAltL:格式化代码AltInsert:生成代码(…...

C语言统计成绩

目录 描述 输入描述: 输出描述: 问题描述 解决方案 总结 描述 输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。 数据范围:1≤�≤100 1≤n≤100 , …...

LVS做集群四层负载均衡的简单理解

背景:业务中主要是TCP/SSL连接,要做四层负载均衡。 之前做负载均衡,调研了nginx(见之前的nginx实现后端服务负载均衡和nginx负载均衡监测后台服务状态)。 nginx作为一个应用,做四层负载均衡效率低。lvs是li…...

2.1_6 线程的实现方式和多线程模型

文章目录 2.1_6 线程的实现方式和多线程模型(一)线程的实现方式(1)用户级线程(2)内核级线程 (二)多线程模型(1)一对一模型(2)多对一模…...

4.5 MongoDB 文档存储

目录 1. 相关安装 2. Pycharm可视化观察MongoDB 3. python使用 MongoDB 最初流程代码 4. 插入、查询、更新、删除数据 4.1 插入数据 4.2 查询数据 4.3 更新数据 4.3.1 更新一条数据 4.3.2 更新多条数据 4.4 删除数据 5. 计数、排序、偏移 5.1 计数 5.2 排序 5.3 …...

什么是服务级别协议(SLA)?

在数字化时代,企业和服务提供商之间的关系变得越来越复杂,而服务级别协议(SLA)则在这个复杂网络中发挥着至关重要的作用。本文将深入介绍SLA,从它的定义、应用场景到监测方法,全方位解析这一法律桥梁如何确…...

使用Python进行Sentinel-2 图像聚类

聚类或无监督分类是根据统计相似性将图像的像素值分组或聚合到一定数量的自然类(组)的过程。在本教程中,我们将使用rasterio进行sentinel-2图像处理,并使用功能强大的完整scikit-learn python 包在jupyter Notebook中进行聚类。 Scikit-learn是一个用于 Python 编程语言的…...

SNZ资本的首席信息官Gavin确认出席Hack .Summit() 2024香港开发者大会!

SNZ资本的首席信息官Gavin确认将出席由 Hack VC 主办,并由 AltLayer 和 Berachain 联合主办,与 SNZ 和数码港合作,由 Techub News 承办的Hack.Summit() 2024区块链开发者盛会。 Gavin是SNZ控股和SNZ资本的首席信息官。Gavin在区块链和金融科技…...

js里面有引用传递吗?

一:什么是引用传递 引用传递是相对于值传递的。那什么是值传递呢?值传递就是在传递过程中再复制一份,然后再赋值给变量,例如: let a 2; let b a;在这个代码中,let b a; 就是一个值传递,首先…...

C 语言 math.h 库介绍

在 C 语言中,math.h 头文件定义了各种数学函数和一个宏,用于处理数学运算。这些函数接受 double 类型的参数,并返回 double 类型的结果。 库宏 在 math.h 中定义了唯一的一个宏: HUGE_VAL:当函数的结果不可表示为浮…...

Eigen-Matrix矩阵

Eigen-Matrix矩阵 一、概述二、矩阵的前三个模板参数三、向量四、动态维度参数五、构造函数六、索引访问器七、逗号初始化八、矩阵维度调整九、赋值和调整大小十、固定尺寸vs.动态尺寸十一、可选模板参数十二、方便预定义 一、概述 在Eigen中,所有矩阵和向量都是矩…...

蓝桥杯14届计算思维国赛U8组包含真题和答案

十四届蓝桥杯国赛考试计算思维 U8 组 答案在底部 第一题 以下选项中,( )是由美国计算机协会设立,对在计算机领域内作出重要贡献的个人授予的奖项 。A.图灵奖 C.菲尔兹奖 B.诺贝尔奖 D.普利策奖 第二题 希希去吃寿司。餐台上摆出了许多食物,可供大家自选。如下图所示。 …...

opencv内存溢出del释放变量 (python)

报错: cv2.error: OpenCV(3.4.17) D:\a\opencv-python\opencv-python\opencv\modules\core\src\alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 12211548 bytes in function ‘cv::OutOfMemoryError’ 检查内存代码 import psutil# 获取当前进…...

【算法与数据结构】复杂度深度解析(超详解)

文章目录 📝算法效率🌠 算法的复杂度🌠 时间复杂度的概念🌉大O的渐进表示法。 🌠常见复杂度🌠常见时间复杂度计算举例🌉常数阶O(1)🌉对数阶 O(logN)🌉线性阶 O(N)&#x…...

Upload-Labs-Linux1【CTF】

拿到这道题目一看&#xff0c;发现是upload靶场&#xff1b;这不简简单单吗&#xff1b;结果中间还是遇到了一些小问题 小坑总结&#xff1a;该关只识别标准php语法&#xff1a;<?php phpinfo()?>格式&#xff1b;即<?php ?> 不识别<? phpinfo()?> &…...

HunterPie:从数据迷雾到狩猎大师的智能进化指南

HunterPie&#xff1a;从数据迷雾到狩猎大师的智能进化指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/HunterPie-legacy …...

SpringBoot配置安全实战:从明文到ENC加密的进阶之路

1. 为什么你的SpringBoot配置正在"裸奔"&#xff1f; 记得去年我接手一个微服务项目时&#xff0c;发现所有数据库密码、Redis密钥都直接写在application.yml里&#xff0c;就像把家门钥匙挂在门把手上。更可怕的是&#xff0c;这些配置文件还被提交到了GitHub公开仓…...

告别转译 拥抱丝滑:M1/M2 Mac原生安装MATLAB 2022b实战指南

1. 为什么你需要原生版MATLAB 2022b&#xff1f; 如果你正在使用M1/M2芯片的MacBook&#xff0c;却还在忍受转译版MATLAB的卡顿&#xff0c;那这篇文章就是为你准备的。我亲身经历过从Intel转译版切换到原生版的整个过程&#xff0c;那种从"幻灯片"到"德芙般丝…...

图解Transformer/BERT/XLNet:三张Mask矩阵,彻底搞懂语言模型如何“防剧透”

三张Mask矩阵图解&#xff1a;Transformer/BERT/XLNet如何实现语言模型的"防剧透"机制 语言模型的核心挑战之一&#xff0c;是如何在预测下一个词时避免"作弊"——即防止模型提前看到未来的信息。这就好比考试时不能偷看答案&#xff0c;写作时不能抄袭未完…...

LibreCAD终极指南:打破专业2D绘图的技术壁垒与成本束缚

LibreCAD终极指南&#xff1a;打破专业2D绘图的技术壁垒与成本束缚 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/parabola/hy…...

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation(以65nm PDK为例)

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation&#xff08;以65nm PDK为例&#xff09; 电荷泵&#xff08;Charge Pump&#xff09;作为锁相环&#xff08;PLL&#xff09;中的关键模块&#xff0c;其电流匹配性能直接影响整个系统的相位噪声和杂散水…...

从FreeRTOS任务调度原理,拆解ESP32 Task Watchdog触发重启的真正原因

从FreeRTOS任务调度机制解析ESP32看门狗触发的底层逻辑 当你在ESP32上运行一个高优先级任务时&#xff0c;是否遇到过系统莫名其妙重启的情况&#xff1f;控制台输出"Task watchdog got triggered"的提示&#xff0c;却找不到根本原因&#xff1f;这背后隐藏着FreeRT…...

告别英文困扰:Android Studio中文界面3步配置完整指南

告别英文困扰&#xff1a;Android Studio中文界面3步配置完整指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 你是否曾经面对…...

别再死记硬背LSTM公式了!用PyTorch手写一个BiLSTM,从代码里看懂数据怎么‘流’

从零实现BiLSTM&#xff1a;用PyTorch代码透视数据流动本质 当你第一次看到LSTM那复杂的门控结构图时&#xff0c;是否曾被各种箭头和符号搞得晕头转向&#xff1f;作为NLP领域的核心模型之一&#xff0c;双向长短期记忆网络(BiLSTM)在文本分类、命名实体识别等任务中表现出色&…...

Windows Cleaner终极指南:免费开源工具彻底解决C盘爆红和电脑卡顿问题

Windows Cleaner终极指南&#xff1a;免费开源工具彻底解决C盘爆红和电脑卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Wind…...