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


    一、搭建局域网

    四个服务器去部署。

    • ①启动容器
    • ②制作镜像
    • ③搭建局域网
    • ④容器之间的相互通信
      在这里插入图片描述

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

    docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1
    
    • 1

    查看局域网

    docker network ll
    docker network ls
    
    • 1
    • 2

    在这里插入图片描述

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

    查看防火墙是否关闭

    systemctl status firewalld
    
    • 1

    在这里插入图片描述
    项目没上线的时候防火墙是可以关闭的,容易测试问题
    项目上线的话就必须开启
    所以我就要停掉防火墙

    systemctl stop firewalld
    
    • 1

    在这里插入图片描述

    注意:关闭防火墙的时候,必须记得重启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.

    systemctl restart docker
    
    • 1

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

    二、需要安装redis

    ①创建目录

    mkdir -p /data/redis/{conf,data}
    
    • 1

    在这里插入图片描述

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    查看redis有没有启动成功

    docker exec -it zking-redis /bin/bash
    whereis redis-cli
    cd /usr/local/bin
    ls
    redis-cli
    ping
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    可以看到是成功的

    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.创建文件夹
    mkdir -p /data/mysql/{conf,data}
    
    • 1

    在这里插入图片描述

    • 2.上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf)
    mv my2.cnf my.cnf
    
    • 1

    在这里插入图片描述

    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    在这里插入图片描述
    先登录进去

    mysql -u root -p
    
    • 1

    在这里插入图片描述
    创建用户及授权

    grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;
    
    • 1

    在这里插入图片描述
    刷新

    flush privileges;
    
    • 1

    刷新完之后去外部访问,看能访问不
    在这里插入图片描述
    装好了之后就要去初始化数据库脚本
    在这里插入图片描述
    你也可以使用其他方式

    1. 使用客户端工具初始化数据库
    2. 使用命令初始化数据库
    
    • 1
    • 2

    到这里数据库就完成了。

    四、部署后端服务

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

    4.1使用Dockerfile自定义镜像

    1)切换到家目录

    cd ~
    mkdir ruoyi-admin
    cd ruoyi-admin
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    把自定义镜像也放进去
    在这里插入图片描述

    mv Dockerfile_ruoyi-admin Dockerfile
    
    • 1

    在这里插入图片描述
    运行容器

    docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080  ruoyi-admin
    
    • 1

    在这里插入图片描述
    然后进入到容器看是否正常(查看日志)
    在这里插入图片描述
    然后去看后端项目搭建好了没,去测试一下
    在这里插入图片描述
    到目前为止后端项目就部署成功了。(如果还有不懂的私信博主)

  • 相关阅读:
    JAVA计算机毕业设计冰鲜鱼管理系统的设计与实现Mybatis+源码+数据库+lw文档+系统+调试部署
    【Spring Cloud系统】- Zookeer特性与使用场景
    Mac电脑其他文件太占内存?如何进行删除
    2023蓝帽杯半决赛misc题目复现
    java: idea中代码自动布局优化、注释、复用等快捷键为
    系统分析与设计 复习
    零基础入门金融风控之贷款违约预测挑战赛——简单实现
    Nuxt3 的生命周期和钩子函数(一)
    LNMP架构的部署
    代码随想录算法训练营第六十二天 |503.下一个更大元素II、42. 接雨水
  • 原文地址:https://blog.csdn.net/2301_77744536/article/details/136496239