本文章全部阅读大约2小时,包含一个完整的springboot + vue +mysql+redis前后端分离项目的部署在docker上的全流程,比较复杂,请做好心理准备,遇到问题可留言或则私信

目录

1 安装Docker,以及简单使用参照

2 Docker部署mysql

如何配置docker中的mysql为,外界可远程访问那?

如何修改mysql的配置文件?

如何在本机和远程登陆mysql?

本机

远程

3 部署Redis

4 重新打包springboot项目

5 在宿主机上部署前端项目

6 Docker 的命令

关于重启

常用的

7 快速入门

Docker 是什么

跟普通虚拟机的对比

打包、分发、部署

Docker 部署的优势

Docker 通常用来做什么

重要概念:镜像、容器

8 其他的疑惑解答

文件挂载与文件夹的挂载?

为什么挂载的文件变成文件夹了?


1 安装Docker,以及简单使用参照

(14条消息) ubuntu安装、使用docker超级详细的入门教程_ubuntu 安装docker_v奶油爆米花的博客-CSDN博客

2 Docker部署mysql

看不懂的先看本文件的1和8

1 查看下已有的镜像

docker images

2 下载Mysql的镜像(这里已5.7版本为例)

docker pull mysql:5.7

3 再次查看是否成功

docker images;

4 运行镜像

docker run -d -p 3307:3306 -v mysql_conf:/etc/mysql/conf.d -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=自己设置的密码 --name mysql01 mysql:5.7

注意这里第一个端口为宿主主机的端口,第二个为docker的端口,两者互相独立而不干扰,在外界访问时服务器时,先通过宿主机的端口访问,然后docker会监听对应的端口从而将宿主机的端口映射为容器的端口

5 查看运行的容器

docker ps;

7 查看mysql的IP地址,需要先记下来,待会要用到的

docker inspect 容器的id

8 查询卷挂载目录列表

docker volume ls

9 根据指定列查出此列的文件地址

docker volume inspect mysql_data

10 将Mountpoint复制下来,去此目录下上传sql文件

11上传文件(略)

我这边已经上传好了(yyy.sql)

12 将sql文件暂存docker

sudo docker cp sql文件路径 mysql容器id:/

注意 linux命令后面中后面要加上:/

13 将数据导入数据库

进入docker容器

docker exec -it mysql01 /bin/bash

14 创建数据库....报错了!

额额额额额额,哈哈,其实 不是别忘了我们还没有登陆数据库那!!!

15 登陆数据库系统

mysql -u root -p

密码就是刚昂运行时的密码

16 创建数据库

create database 数据库名;

17 查看是否创建成功

show databases;

18 选定数据库

use yyy

19 运行刚刚暂存的sql文件

source yyy.sql(这个名字就是上传sql文件的名字)

20 查看数据库中的表格

show tables

21 修改mysql的密码(可不用)

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

修改用户权限为可远程访问

22 新建用户用户并设置可远程访问(可不用)

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

23 授予用户所有表的权限(可不用)

grant all on *.* to 'username'@'%';

24 刷新权限

flush privileges;

25 退出数据库系统,退出bash使用

exit

25 (可不用)

如何直观的修改远程访问权限?

1 选用mysql数据库

user mysql;

2 查询所有用户名和host

select user,host from user;

3 .修改root用户的host字段

update user set host="%" where user="root"

4 立即刷新权限

flush privileges

OK!额,如果想配置可远程访问mysql看下面的

如何配置docker中的mysql为,外界可远程访问那?

1 进入数据库修改用户权限为可远程访问

方法看上面的···如何直观的修改远程访问权限?···

2 放行层层的防火墙下的端口

2.1 打开服务器安全组的特定端口

2.2 在操作系统(utuntu)内部放行

#允许所有的外部IP访问本机的22/tcp端口(ssh)

sudo ufw allow 端口号/tcp

2.3 在宝塔面板中放行

3 直接远程访问命令即可访问

注意这里的端口号是宿主机器的不是docker的

mysql -h 服务器的IP地址 -P 端口 -u 用户名 -p

eg:

mysql -h 192.168.5.116 -P 3306 -u root -p

如何修改mysql的配置文件?

1 查看当前mysql使用的配置文件

mysql --help | grep 'my.cnf'

2 进入修改即可

vim 路径

如何在本机和远程登陆mysql?

本机

mysql -u root -p

远程

mysql -h 服务器的IP地址 -P 端口 -u 用户名 -p

eg:

mysql -h 192.168.5.116 -P 3306 -u root -p

3 部署Redis

1 拉取redis的镜像

docker pull redis

2 查看是否下载成功

docker images

3 运行redis(最重要的步骤)

3.1新建映射文件夹

建立以下目录

3.2 把redis的配置文件放到conf中

redis.conf下载链接

http://download.redis.io/redis-stable/redis.conf

3.3 修改下载的配置文件

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。

dir ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

requirepass foobared #设置密码 把foobared改为自己设置密码

3.4 运行命令

docker run --name myredis01 -p 6380:6379 -v /mydockerconf/redis/data:/redis/data -v /mydockerconf/redis/conf:/redis/conf/redis.conf -d redis redis-server /redis/conf/redis.conf

4 查看是否成功

docker ps

5 查看Redis的ip,并记住

docker inspect redis的id

6 查看日志

docker logs redis的id

4 重新打包springboot项目

1)重新在springboot项目中编写配置文件/新建一个配置文件

刚刚的mysql 的ip地址,以及端口号(在docker容器的端口号)

172.17.0.2:3306

刚刚的redis 的ip地址,以及端口号

172.17.0.3:6379

实例如下

spring:redis:host: 172.17.0.3port: 6379password:database: 0jedis:pool:max-active: 10max-wait: 5000max-idle: 500datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://172.17.0.2:3306/yyy?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: yyypassword: xxtype: com.alibaba.druid.pool.DruidDataSource

2)打包成jar包上传给服务器的指定目录

如图第二个

3)编写Dockerfile

# Docker image for springboot file run
# VERSION 0.0.1
# Author:
# 基础镜像使用java
FROM openjdk:8
# 作者
MAINTAINER mydockerscm
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将MyBlogscm-0.0.1-SNAPSHOT.jar包添加到容器中并更名为app.jar
ADD MyBlogscm-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

4)构建镜像

回到我们新建好的目录

docker build  -t 自己随便起的名字:自己随便起的便签 .

(注意最后的 .)

5)查看是否成功

docker images

6) 启动容器

7)查看是否成功

8)查看运行日志

docker logs 容器id

5 在宿主机上部署前端项目

可参考这篇文章的前端部分的部署

(11条消息) 宝塔部署前后端分离项目(Vue+SpringBoot)_宝塔面板部署前后端分离项目_桂亭亭的博客-CSDN博客

6 Docker 的命令

关于重启

守护进程重启   sudo systemctl daemon-reload

重启docker服务   systemctl restart  docker

重启docker服务  sudo service docker restart

关闭docker service docker stop

关闭docker systemctl stop docker

常用的

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表

7 快速入门

Docker 是什么

Docker 是一个应用打包、分发、部署的工具
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,
而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。

本文档课件配套 视频教程

跟普通虚拟机的对比

特性 普通虚拟机 Docker
跨平台 通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行 支持的系统非常多,各类 windows 和 Linux 都支持
性能 性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了 性能好,只虚拟软件所需运行环境,最大化减少没用的配置
自动化 需要手动安装所有东西 一个命令就可以自动部署好所需环境
稳定性 稳定性不高,不同系统差异大 稳定性好,不同系统都一样部署方式

打包、分发、部署

目前我们只使用到了,打包和部署

打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在 Windows/Mac/Linux。

Docker 部署的优势

常规应用开发部署方式:自己在 Windows 上开发、测试 --> 到 Linux 服务器配置运行环境部署。

问题:我机器上跑都没问题,怎么到服务器就各种问题了

用 Docker 开发部署流程:自己在 Windows 上开发、测试 --> 打包为 Docker 镜像(可以理解为软件安装包) --> 各种服务器上只需要一个命令部署好

优点:确保了不同机器上跑都是一致的运行环境,不会出现我机器上跑正常,你机器跑就有问题的情况。

例如 易文档,SVNBucket 的私有化部署就是用 Docker,轻松应对客户的各种服务器。

Docker 通常用来做什么

  • 应用分发、部署,方便传播给他人安装。特别是开源软件和提供私有部署的应用
  • 快速安装测试/学习软件,用完就丢(类似小程序),不把时间浪费在安装软件上。例如 Redis
  • 多个版本软件共存,不污染系统,例如 Python2、Python3,Redis4.0,Redis5.0
  • Windows 上体验/学习各种 Linux 系统

重要概念:镜像、容器

镜像:可以理解为软件安装包,可以方便的进行传播和安装。
容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。

8 其他的疑惑解答

文件挂载与文件夹的挂载?

文件夹挂载
若文件夹不存在,则docker会先创建出文件夹(若为多层文件夹,则递归创建)

文件挂载
docker 禁止用主机上不存在的文件挂载到容器中,所以我们在想挂载文件时直接挂载整个文件夹即可

为什么挂载的文件变成文件夹了?

因为docker默认会直接挂载文件夹,如果不存在也会创建文件夹而不是文件

在Docker 上完成对Springboot+Mysql+Redis的前后端分离项目的部署(全流程,全截图)相关推荐

  1. 基于springboot 快速搭建简单前后端分离项目-后台框架

    目录 1.新建project 2.选择依赖 3.简单配置 4.数据库准备 5.完成后台逻辑代码 5.1创建java实体对象 5.2创建repository 5.3单元测试 5.4编写controlle ...

  2. SpringBoot+Vue+Redis实现前后端分离的字典缓存机制

    场景 前端使用Vue+ElementUI,要显示下拉框,下拉框的字典数据从数据库中的字典表中获取. 但是如果每次下拉框都要项后台发动请求数据库的请求,性能可想而知. 所以可以在查询下拉框的字典数据时先 ...

  3. 基于springboot+Redis的前后端分离项目(七)-【黑马点评】

  4. springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目(笔记,帮填坑)

    根据B站up主MarkerHub视频制作的一个笔记 我的博客 B站博主链接: https://www.bilibili.com/video/BV1PQ4y1P7hZ?p=1 博主的开发文档: http ...

  5. 基于SpringBoot+Vue开发的前后端分离博客项目-Java后端接口开发

    文章目录 1. 前言 2. 新建Springboot项目 3. 整合mybatis plus 第一步:导依赖 第二步:写配置文件 第三步:mapper扫描+分页插件 第四步:代码生成配置 第五步:执行 ...

  6. 视频教程-基于springboot2.x+layui+shiro+redis整合前后端分离的权限管理系统-Java

    基于springboot2.x+layui+shiro+redis整合前后端分离的权限管理系统 拥有八年的Java项目开发经验,擅长Java.vue.SpringBoot.springCloud.sp ...

  7. 基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

    本文目录 前言 做项目的三大好处 强强联手(天狗组合) 专栏作者简介 专栏的优势 后端规划 1. SpringBoot 和 SpringCloud 的选择 2. Mybatis 和 MybatisPl ...

  8. 【Docker】1、 前后端分离项目 下载启动运行

    人人开源前后端分离项目下载与配置 文章目录 人人开源前后端分离项目下载与配置 前后端分离框架介绍 后端项目下载与配置 1.renren-fast后台项目介绍 2.开发环境搭建 3.下载后端renren ...

  9. 阿里服务器部署springboot+vue前后端分离项目

    服务器部署springboot+vue前后端分离项目 最近刚刚在实习熟悉公司的业务,所有尝试着自己将项目部署到服务器上.本次部署的项目是Spring Boot+Vue前后端分离项目,后端使用的技术有M ...

最新文章

  1. windows 安装python-pcl 测试ok
  2. linux中pthread_kill函数详解
  3. 双线程猜数字 TwoThreadGuessNumber.java
  4. python的django项目中怎么添加app_django下如何创建多个app并设置urls
  5. 给python小白的几个小练习(附答案详解哦)
  6. 2019.7.31正则
  7. css标签权重计算知识详解
  8. 用命令修改oracle的密码,用命令修改Oracle数据库密码
  9. Vue3中获取鼠标在浏览器x轴和y轴的位置
  10. 华为手机pc模式机型_华为 P20 搭载的 PC 模式厉害了,刷新你对手机的认知
  11. Java用HttpClient爬大学英语四六级考试成绩查询接口
  12. python中spider的用法_Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
  13. Andorid APK反逆向解决方案---梆梆加固原理探寻
  14. 经验分享!java程序员面试十多家公司后的经验心得
  15. MFC动态创建Picture Control
  16. Electron在win7上加载plotyjs失败的解决方法
  17. 【计算几何-点的定位】
  18. wps文件上的logo怎么去掉_WPS卸载后Office图标显示出现问题怎么办?(解决方法)...
  19. iframe定位、下拉框定位、获取cookie
  20. 博客搭建全流程与心得(宝塔+Typecho)

热门文章

  1. BFT-SMaRt:用Netty做客户端的可靠信道
  2. TensorFlow2.0教程-使用keras训练模型
  3. Web前端大作业—个人网页(html+css+javascript)
  4. PS如何批量处理图片大小
  5. opencv微信二维码引擎的使用(for java)
  6. 2022年康复医学治疗技术(师)考试题库
  7. android游戏开发实例-可局域网对战的飞行棋(一)
  8. 小程序开发平台有哪些?第三方小程序电商开发平台一览
  9. windows密钥查看器ProduKey1.82汉化
  10. 物联平台纷争,能否拯救智能硬件?