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

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

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

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

相关推荐
Sinowintop7 分钟前
领航自贸港新赛道:EDI 重构企业跨境业务高效增长体系
大数据·运维·服务器·edi·数据交换·国产edi·海南自贸港
两千次24 分钟前
3d线扫获取图片
运维·服务器
Xyz996_26 分钟前
K8S-Configmap资源
云原生·容器·kubernetes
_w_z_j_29 分钟前
Linux----线程互斥与同步
linux·运维·开发语言
风华同学32 分钟前
【Linux驱动篇】字符设备驱动开发
linux·运维·驱动开发
wxh_无香花自开1 小时前
Linux 笔记:rpm命令
linux·运维·笔记·rpm
乐迪信息1 小时前
乐迪信息:AI摄像机识别煤矿出入井车辆数量异常检测
大数据·运维·人工智能·物联网·安全
张童瑶1 小时前
Linux SSH配置密钥文件及免密登录
linux·运维·ssh
翼龙云_cloud1 小时前
腾讯云渠道商:腾讯云快照和镜像备份区别在哪?
运维·服务器·云计算·腾讯云
Warren981 小时前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django