用docker一键部署前后端分离项目的详细流程
作者:桃花坞生动的芒果
#重命名 mv Dockerfile_ruoyi-admin Dockerfile 4)ruoyi-admin为镜像名称,开始制作镜像 docker build -t ruoyi-admin .
一、搭建局域网
1.1、介绍前后端项目搭建
需要4台服务器,在同一个局域网中
1.2、操作
# 搭建net-ry局域网,用于部署若依项目 net-ry:名字 docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1 #查看 docker network ls
能不能访问分为2种情况:
一、如果项目部署完上线了,外部不能访问内部
二、部署的时候是应该能访问的,需要看Mysql等是否安装好,防火墙应该关闭,来调试问题
#查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #启动docker systemctl restart docker
# 注意1:关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用。
# 注意2:关闭防火墙后必须重启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.
二、安装redis
#创建两个目录 mkdir -p /data/redis/{conf,data} # cd /data/redis/ ll cd conf
进入刚刚创建的conf目录,上传文件
#上传redis.conf文件到/data/redis/conf文件夹中
# bind 0.0.0.0 充许任何主机访问
# daemonize no 因为用的是容器,Redis装在容器里面,不影响输入命令
# requirepass sasa 用户密码sasaredis.conf修改
1. 允许redis外地连接
#bind 127.0.0.1改成为
bind 0.0.0.02. 开启redis验证(可选)
requirepass sasa3. 开启redis数据持久化(可选)
appendonly yes
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
id启动 容器不进入
zking-redis 名字
-p 6379:6379 \ 映射端口
-v 挂载
-v /data/redis/data:/data \ 缓存数据
--privileged=true --restart=always \ 给最高权限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方式
测试
#进入容器 docker exec -it zking-redis /bin/bash root@ec98cd3af83e:/data# whereis redis-cli redis-cli: /usr/local/bin/redis-cli root@ec98cd3af83e:/data# cd /usr/local/bin root@ec98cd3af83e:/usr/local/bin# ls docker-entrypoint.sh redis-benchmark redis-check-rdb redis-sentinel gosu redis-check-aof redis-cli redis-server root@ec98cd3af83e:/usr/local/bin# redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
三、安装Mysql
#退出程序 exit #退出容器 Ctrl+P+Q # 1.创建文件夹 mkdir -p /data/mysql/{conf,data}
#进入conf cd /data/mysql/conf/ # 2.上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf) mv my2.cnf my.cnf
修改官方my.cnf
#运行mysql5.7,注意有单独的mysql镜像 docker run --name=mysql1 -d mysql/mysql-server:5.7 #进入容器查看/etc/my.cnf文件,修改my.cnf文件,让其支持中文
查看mysql数据保存位置
cd /var/lib/mysql>
1. 设置密码
-e MYSQL_ROOT_PASSWORD=sasa:设置root的密码
3.启动MySQL容器服务
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
等待时间有点久
检查
docker ps
远程连接
# 进入容器 docker exec -it zking-mysql /bin/bash # 登录 mysql -u root -p; # 创建用户及授权 grant all privileges on *.* to root@'%' identified by 'sasa' with grant option; # 刷新权限 flush privileges;
注意:0- 1-工具原因,复制进去记得删除
工具测试
四、部署后端服务
4.1、创建数据库
运行sql文件
4.2、使用Dockerfile自定义镜像
# 1.构建Dockerfile镜像 1)切换到家目录 cd ~ #新建文件夹 mkdir ruoyi-admin #切进去 cd ruoyi-admin 2)上传ruoyi-admin.jar到Dockerfile_ruoyi-admin文件所在目录
测试
docker images #运行容器 docker run -itd --name ruoyi-admin --network net-ry -p 80 80:8080 ruoyi-admin docker ps #进入容器 docker exec -it ruoyi-admin /bin/bash #查看日志 cd /home/ruoyi/logs/ ls -l
测试
五、前端部署
5.1、nginx部署
分析nginx.conf
5.2、具体步骤
# 1.创建目录 mkdir -p /data/nginx/{conf,html} # 2.切换到conf目录 cd /data/nginx/conf/ #3上传nginx.conf至/data/nginx/conf文件夹中
运行启动容器
docker run -itd --name zking-nginx --network net-ry -p 80:80 \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nginx/html:/usr/share/nginx/html \ --privileged=true --restart=always \ nginx
位置解释
切换目录
cd /data/nginx/html/
上传项目
解压
#下载解压命令 yum install -y unzip #输入解压命令dist.zip压缩包名字 unzip dist.zip
测试
去浏览器输入ip
因为前端是80所有后面不需要带端口,直接IP就可以了
点击登录就成功了
以上就是用docker一键部署前后端分离项目的详细流程的详细内容,更多关于docker部署前后端分离项目的资料请关注脚本之家其它相关文章!