综合实战(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.hqwc.cn/news/499068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java008 - Java方法

1、方法概述 1.1 概念 将独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。 1.2 注意事项 方法必须先创建才能使用,该过程称为方法的定义方法创建好不能直接运行,需要手动使用才执行,该过程称为方法的调用 2、方…

观察者模式与发布订阅模式

观察者模式 定义: 观察者模式是一种行为型设计模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 结构图: ES6简易代码实现: //ts环境下…

ai作画在线生成!这8个AI生图工具一定要知道。

过去的2023年被称作AI元年,随之而来的2024,被业内人士称之为AI应用元年,即随着大模型和各类AI应用的涌现速度放缓,人们关注的焦点也从产品层面(有哪些好用的AI应用),转移到AI如何更好地赋能实际…

【Godot4自学手册】第十七节主人公的攻击和敌人的受伤

本节主要学习主人公是如何向敌人发起进攻的,敌人是如何受伤的,受伤时候动画显示,击退效果等。其原理和上一节内容相同,不过有许多细节需要关注和完善。 一、修改Bug 在本节学习之前,我将要对上一节的代码进行完善&am…

androidframework开发面试,阿里P8成长路线

字节跳动Android面经 一面问的 Java 和 Android 基础 1、Jvm虚拟机 2、messageQueue会不会阻塞ui线程 3、对象锁和类锁 4、之字形打印树 5、还有其他的 《Android学习笔记总结最新移动架构视频大厂安卓面试真题项目实战源码讲义》 **完整开源项目:docs.qq.com/doc…

【leetcode】破解闯关密码 模板字符串

/*** param {number[]} password* return {string}*/ var crackPassword function(password) {return minNumspassword.sort((a,b)>{if(${a}${b}-${b}${a}>0){return 1;}else{return -1;}}).join(""); };巧用模板字符串对数组进行排序

二、TensorFlow结构分析(2)

目录 1、会话 1.1 __init__(target,graphNone,configNone) 1.2 会话的run() 1.3 feed操作 TF数据流图图与TensorBoard会话张量变量OP高级API 1、会话 1.1 __init__(target,graphNone,configNone) def session_demo():# 会话的演示# Tensorflow实现加法运算a_t tf.constan…

Vue+SpringBoot打造音乐偏好度推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1.2 我的喜好模块2.1.3 每日推荐模块2.1.4 通知公告模块 2.2 用例图设计2.3 实体类设计2.4 数据库设计 三、系统展示3.1 登录注册3.2 音乐档案模块3.3 音乐每日推荐模块3.4 通知公告模…

继承-学习2

this关键字:指向调用该方法的对象,一般我们是在当前类中使用this关键字,所以我们常说代表本类对象的引用 super关键字:代表父类存储空间的标识(可看作父类对象的引用) 父类: package ven;public class Fu {//父类成员…

【云原生】Spring Cloud Gateway的底层原理与实践方法探究

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:从入门到入魔》 🚀 本…

Win32汇编ListView控件学习

此控件比较复杂;和基础win32控件不同;需要先初始化Windows公共控件库, invoke InitCommonControls 之后才可使用; lvdemo.asm, .386.model flat, stdcalloption casemap :none ; case sensitiveinclude window…

Windows Docker 部署 SQL Server

部署 SQL Server 打开 Docker Desktop,切换到 Linux 内核。然后在 PowerShell 执行下面命令,即可启动一个 SQL Server 服务,这里安装的是 2022 年版本 docker run -e "ACCEPT_EULAY" -e "MSSQL_SA_PASSWORDSQL123abcABC!&qu…