综合实战(volume and Compose)

本文介绍了如何使用Docker容器进行MySQL数据备份与灾难恢复,以及如何使用DockerCompose部署SpringBoot应用并与MySQL集成,还展示了WordPress的Docker部署过程。
摘要由CSDN通过智能技术生成

"让我,重获新生~" 


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 页面:

        配置参数,点击安装:

        进入后台:

        删除,释放空间:


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

祝你好运,向阳而生~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值