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

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

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

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

相关推荐
啥都想学的又啥都不会的研究生18 分钟前
Redis设计与实现-服务器中的数据库
运维·服务器·数据库·redis·笔记·缓存·性能优化
djykkkkkk30 分钟前
ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9
linux·运维·ubuntu
大小科圣1 小时前
Tomcat介绍及部署
运维·服务器
好多知识都想学1 小时前
第二章Linux 命令概述
linux·运维·服务器
wo3258661451 小时前
浪潮英政服务器CS5420H2配置阵列时报错The reguested command has inualid arguments.解决方法
运维·服务器
熊峰峰2 小时前
Linux第0节:Linux环境的搭建
linux·运维·服务器
一点多余.2 小时前
nginx的使用
运维·nginx
鸭梨山大。2 小时前
linux命令-iptables与firewalld 命令详解
linux·运维·网络
a_j582 小时前
K8s面试题总结(十一)
云原生·容器·kubernetes
半夏知半秋2 小时前
linux下的网络抓包(tcpdump)介绍
linux·运维·服务器·网络·笔记·学习·tcpdump