【Docker】docker部署前后端分离项目( 前:nginx + vue 后:springboot+ redis + mysql)

一.安装docker

如果你不是前后端分离的,那你直接看第五步就行。

linux安装docker

以下命令我使用的是普通用户和CentOS7.9的linux环境
注意: 以下步骤要是不通,那就可能是文件夹权限或者防火墙的事,也有可能是端口占用。

二.docker安装和配置nginx

1.拉取nginx

注意:如果你想写固定版本号,那你需要先去docker官网查询支不支持你写的版本号

$ sudo docker pull nginx:版本号   //如果不写版本号,那就拉取最新的nginx
$ sudo dokcer images              //查看你的镜像

在这里插入图片描述

2.创建临时nginx容器

dokcer常用命令

$ sudo docker run -d -p 4455:80 --name nginxtest nginx //运行nginx容器
-d                 //后台方式启动
-p 4455:80         //将容器的80端口映射到4455上
--name nginxtest   //自定义容器的名字

$ sudo docker ps     //查看运行中的容器
$ sudo docker ps -a  //查看所有的容器

在这里插入图片描述
测试nginx:你的虚拟机ip+映射端口号(注意:测试的电脑必须和你的虚拟机在一个网段,至少处于同一局域网),这个容器的目的就是为了让我们拿到 nginx.conf 文件
在这里插入图片描述

3.从nginx容器复制 nginx.conf 文件到宿主机

//提前在宿主机创建一个 nginx 目录然后在 nginx目录下创建一个html目录
// 将容器的nginx.conf文件复制到 宿主机的 /usr/nginx 目录下
$ sudo docker cp 容器id或容器名称:/etc/nginx/nginx.conf /usr/nginx 


$ sudo mkdir /usr/nginx          //创建nginx目录
$ sudo mkdir /usr/nginx/html     //在nginx目录下在创建html目录

4.删除临时nginx容器

$ sudo docker rm -f 容器id或容器名称

5.启动真正的nginx容器

sudo docker run -d  -p 3344:80 -v /usr/nginx/html:/usr/share/nginx/html -v /usr/nginx/nginx.conf:/etc/nginx/nginx.conf --name nginx1 nginx

-v 宿主机目录或文件:虚拟机目录或文件;  使两个目录或文件夹同步

在这里插入图片描述

6.查看是否挂载成功

$ sudo docker inspect 容器id或容器名称

在这里插入图片描述

7.配置nginx.conf 和 vue的包放到指定位置

首先打包之后,得到dist文件,然后里面包含 index.html 和 static 文件,放到你新建的 html文件夹下

在这里插入图片描述
配置nginx.conf
在这里插入图片描述

server{
     listen 80;               //nginx的端口号
     server_name localhost;   //访问的域名
   
   
   location / {
	root  /usr/share/nginx/html;          //访问你首页的地址
	try_files $uri $uri/ /index.html;
	index index.html index.htm;
     }
   }

完成配置之后,要重启nginx,然后直接 虚拟机的ip + 你映射的nginx端口 就能访问你的前端项目了。

三 docker安装部署redis

1.安装redis

$ sudo docker pull redis //拉取最新的redis

2.部署redis

sudo docker run -d  -p 6379:6379 --name myredis redis --requirepass "密码"  //运行redis镜像

测试redis是否启动成功
链接:redis可视化工具
提取码:0221

四 docker安装部署mysql

1.安装mysql

$ sudo docker pull mysql //拉取最新的mysql 

2.部署mysql

$ sudo docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root mysql //运行mysql镜像

3.远程连接不上解决

注意: 远程连接的机器必须和你虚拟机在一个局域网里面才行,或者一个网段也行。要不然就得使用VPN。

① 数据库远程权限没开

select host,user,password from user;   //查看用户表

在这里插入图片描述

如果没有上图的第二条信息,那你就需要新建一个用户,并且设置密码,然后刷新缓存,就可以连接了

 CREATE USER 'test'@'%' IDENTIFIED BY 'admin'; //新建一个名为 test并开启远程连接,密码为admin的用户
 flush privileges; //刷新权限

在这里插入图片描述

② 防火墙问题

CentOS 7 防火墙命令
 (1)systemctl  status firewalld.service       //查看防火墙的状态;
 (2)systemctl  start firewalld.service        //启动防火墙;
 (3)systemctl  stop firewalld.service         //关闭防火墙;
 (4)systemctl  restart firewalld.service      //重启防火墙;
 (5)systemctl  enable firewalld.service       //开机启动防火墙;
 (6)systemctl  disable firewalld.service      //开机禁用防火墙;
 (7)systemctl  is-enabled firewalld.service   //查看防火墙是否开机启动;

五 docker 部署 springboot 项目

docker 部署 springboot 项目

猜你喜欢

转载自blog.csdn.net/twotwo22222/article/details/128647765