使用docker部署若依项目,nginx+2JAVA(openjdk)+redis+MySQL主+MySQL从+nfs(存放上传文件)
时间: 2025-08-04 14:59:03 浏览: 12
<think>嗯,用户需要部署一个完整的若依项目,涉及多个组件和复杂配置。从引用内容看,用户已经研究过基础部署方案,但需要更专业的分布式部署指导。特别值得注意的是用户要求MySQL主从和NFS存储,说明这是生产级需求。用户引用的资料虽然涉及相关组件,但缺乏整合方案:-引用1提供了nginx配置复制操作-引用2展示了MySQL远程访问配置-引用3涉及镜像创建但这些片段无法满足用户需要的完整企业级部署方案考虑到若依项目特性(前后端分离微服务架构),需要特别注意:1️⃣主从数据库同步要考虑若依的数据结构2️⃣NFS存储要确保容器间文件共享3️⃣两个Java服务可能对应后台管理+业务模块用户可能遇到的实际难点包括:•Redis配置未包含在引用中•主从同步后的连接切换机制•NFS的容器权限问题在技术方案上需要补充:✓MySQL主从详细配置步骤✓NFS服务端/客户端部署✓若依配置文件适配方案✓健康检查机制建议将部署过程拆分为基础设施、中间件和应用三层推进,这样结构更清晰。安全方面也要提醒root权限的风险,特别是生产环境</think>
根据您描述的完整需求,以下是Docker部署若依项目的详细解决方案:
### 一、技术栈规划
```
若依项目结构:
- 前端:Nginx(端口80)
- 后台服务:两个OpenJDK容器(端口8080,8081)
- 数据库:MySQL主从集群(主库3306/从库3307)
- 缓存:Redis(端口6379)
- 存储:NFS共享存储
```
### 二、核心部署步骤
#### 1. 创建docker网络
```bash
docker network create ruoyi-net
```
#### 2. MySQL主从部署
**主库配置 (docker-compose.yml片段):**
```yaml
mysql-master:
image: mysql:8.0
container_name: mysql-master
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: master123
volumes:
- ./mysql/master/conf:/etc/mysql/conf.d
- ./mysql/master/data:/var/lib/mysql
command:
--server-id=1
--log-bin=mysql-bin
--binlog-ignore-db=information_schema
--binlog-ignore-db=mysql
--binlog-ignore-db=performance_schema
--binlog-ignore-db=sys
networks:
- ruoyi-net
```
**从库配置增加:**
```yaml
command:
--server-id=2
--relay-log=mysql-relay-bin
```
#### 3. Redis容器部署
```yaml
redis:
image: redis:6-alpine
container_name: ruoyi-redis
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
networks:
- ruoyi-net
```
#### 4. NFS存储配置
**NFS服务器配置:**
```bash
# 宿主机安装NFS
apt install nfs-kernel-server
echo "/nfs_share *(rw,sync,no_root_squash)" >> /etc/exports
systemctl restart nfs-server
```
**容器挂载配置:**
```yaml
volumes:
ruoyi-nfs:
driver: local
driver_opts:
type: nfs
o: addr=宿主机IP,rw
device: ":/nfs_share"
```
#### 5. OpenJDK微服务部署
```yaml
ruoyi-admin:
image: openjdk:11-jre-slim
container_name: ruoyi-admin
ports:
- "8080:8080"
volumes:
- ruoyi-nfs:/app/upload # NFS共享卷
- ./admin.jar:/app.jar
command: java -jar /app.jar
depends_on:
- mysql-master
- redis
networks:
- ruoyi-net
```
#### 6. Nginx配置
```nginx
upstream ruoyi {
server ruoyi-admin:8080;
server ruoyi-job:8081;
}
server {
location / {
proxy_pass http://ruoyi;
}
# 文件存储映射
location /profile {
alias /nfs_share;
autoindex on;
}
}
```
### 三、关键配置点
1. **主从同步操作**
```sql
# 主库创建同步账号
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_pass';
# 从库执行
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='slave_user',
MASTER_PASSWORD='slave_pass';
START SLAVE;
```
2. **若依配置修改**
```properties
# application-druid.yml
master:
url: jdbc:mysql://mysql-master:3306/ry?useSSL=false
slave:
url: jdbc:mysql://mysql-slave:3306/ry?useSSL=false
# application-redis.yml
redis:
host: ruoyi-redis
```
### 四、部署验证命令
```bash
# 检查主从状态
docker exec mysql-slave mysql -uroot -p -e "SHOW SLAVE STATUS\G"
# 测试文件存储
docker exec ruoyi-admin touch /nfs_share/testfile
ls /nfs_share # 宿主机查看
```
> ⚠️ 注意:首次部署需初始化数据库,建议先启动MySQL容器后执行SQL脚本 [^3]。完整配置需根据若依官方文档调整具体参数版本。
阅读全文
相关推荐




















