用docker部署后端项目

一、搭建局域网

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.

参考链接:https://blog.csdn.net/xiegongmiao/article/details/128409967

二、安装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 用户密码sasa

redis.conf修改

  1. 允许redis外地连接

#bind 127.0.0.1改成为

bind 0.0.0.0

  1. 开启redis验证(可选)

requirepass sasa

  1. 开启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
  1. 修改官方my.cnf

    复制代码
     #运行mysql5.7,注意有单独的mysql镜像
     docker run --name=mysql1 -d mysql/mysql-server:5.7
     #进入容器查看/etc/my.cnf文件,修改my.cnf文件,让其支持中文
  2. 查看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文件所在目录

复制代码
#重命名
mv Dockerfile_ruoyi-admin Dockerfile

4)ruoyi-admin为镜像名称,开始制作镜像
docker build -t 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

测试

相关推荐
掘根2 分钟前
【即时通讯系统】环境搭建1——gflags,spdlog
linux·运维·ubuntu
杜子不疼.4 分钟前
内网监控工具翻身!Uptime Kuma+cpolar 实现远程运维自由
linux·运维·服务器
拾光Ծ8 分钟前
【Linux】Ext系列文件系统(一):初识文件系统
linux·运维·服务器·硬件架构·ext文件系统
天荒地老笑话么10 分钟前
Vim核心快捷键与运维实战指南
运维·vim·excel
汪碧康13 分钟前
一文讲解kubernetes的gateway Api的功能、架构、部署、管理及使用
云原生·容器·架构·kubernetes·gateway·kubelet·xkube
IT199515 分钟前
Linux笔记-使用systemd管理进程
linux·运维·笔记
Web极客码15 分钟前
WordPress 在哪里存储网站上的图片?
运维·服务器·wordpress
大佐不会说日语~17 分钟前
Docker Compose 部署 Spring Boot 应用 502 Bad Gateway 问题排查与解决
spring boot·docker·gateway·maven·故障排查
杜子不疼.22 分钟前
用Claude Code构建AI内容创作工作流:从灵感到发布的自动化实践
运维·人工智能·自动化
草莓熊Lotso23 分钟前
从零手搓实现 Linux 简易 Shell:内建命令 + 环境变量 + 程序替换全解析
linux·运维·服务器·数据库·c++·人工智能