Docker之部署前后端分离项目(以若依为案例实施必会!!!)

文章目录

一、搭建局域网

四个服务器去部署。

  • ①启动容器
  • ②制作镜像
  • ③搭建局域网
  • ④容器之间的相互通信

搭建net-ry局域网,用于部署若依项目

bash 复制代码
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1

查看局域网

bash 复制代码
docker network ll
docker network ls

注意1:关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用。

查看防火墙是否关闭

bash 复制代码
systemctl status firewalld

项目没上线的时候防火墙是可以关闭的,容易测试问题

项目上线的话就必须开启

所以我就要停掉防火墙

bash 复制代码
systemctl stop firewalld

注意:关闭防火墙的时候,必须记得重启docker,否者会出现错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.

bash 复制代码
systemctl restart docker

目前为止局域网就搭建完了

二、需要安装redis

①创建目录

bash 复制代码
mkdir -p /data/redis/{conf,data}
bash 复制代码
docker run -itd --name zking-redis -p 6379:6379 \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
--privileged=true --restart=always \
--network net-ry redis \
redis-server /etc/redis/redis.conf 

查看redis有没有启动成功

bash 复制代码
docker exec -it zking-redis /bin/bash
whereis redis-cli
cd /usr/local/bin
ls
redis-cli
ping

可以看到是成功的

  1. --privileged=true :让容器root用户拥有最高权限,否则可能会出现权限不够错误
  2. redis-server /etc/redis/redis.conf:容器启动时执行的命令及读取的配置
  3. redis-6.2.6.tar.gz压缩包中找到redis.conf官方配置文件
  4. 在hub.docker.com中找到启动redis方式

    数据库存储位置

三、安装MySQL

  • 1.创建文件夹
bash 复制代码
mkdir -p /data/mysql/{conf,data}
  • 2.上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf)
bash 复制代码
mv my2.cnf my.cnf
  • 3.启动MySQL容器服务
bash 复制代码
docker run -d --name zking-mysql --network net-ry  \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
--privileged=true --restart=always \
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
mysql/mysql-server:5.7


先登录进去

bash 复制代码
mysql -u root -p

创建用户及授权

bash 复制代码
grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;

刷新

bash 复制代码
flush privileges;

刷新完之后去外部访问,看能访问不

装好了之后就要去初始化数据库脚本

你也可以使用其他方式

bash 复制代码
1. 使用客户端工具初始化数据库
2. 使用命令初始化数据库

到这里数据库就完成了。

四、部署后端服务

把项目打包是开发人员做的事情

4.1使用Dockerfile自定义镜像

1)切换到家目录

bash 复制代码
cd ~
mkdir ruoyi-admin
cd ruoyi-admin


把自定义镜像也放进去

bash 复制代码
mv Dockerfile_ruoyi-admin Dockerfile

运行容器

bash 复制代码
docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080  ruoyi-admin

然后进入到容器看是否正常(查看日志)

然后去看后端项目搭建好了没,去测试一下

到目前为止后端项目就部署成功了。(如果还有不懂的私信博主)

相关推荐
Dobby_051 小时前
【Docker】容器网络探索(二):实战理解 host 网络
网络·docker·云原生
iCxhust1 小时前
windows环境下在Bochs中运行Linux0.12系统
linux·运维·服务器·windows·minix
九河云3 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
守城小轩4 小时前
轻量级HTTP&Socks代理GOST: Linux编译安装
运维·网络·网络协议
奋斗的蛋黄6 小时前
网络卡顿运维排查方案:从客户端到服务器的全链路处理
运维·服务器·网络
wanhengidc7 小时前
云手机搬砖 尤弥尔传奇自动化操作
运维·服务器·arm开发·安全·智能手机·自动化
wow_DG8 小时前
【运维✨】云服务器公网 IP 迷雾:为什么本机看不到那个地址?
运维·服务器·tcp/ip
yuanManGan8 小时前
走进Linux的世界:初识操作系统(Operator System)
android·linux·运维
i_am_a_div_日积月累_9 小时前
jenkins打包报错
运维·rust·jenkins·jenkins打包报错
GIOTTO情9 小时前
舆情处置的自动化实践:基于Infoseek舆情系统的技术解析与落地指南
运维·自动化·linq