当前位置: 首页 > news >正文

docker 部署 若依 Ruoyi springboot+vue分离版 dockerCompose

本篇从已有虚拟机/服务器 安装好dokcer为基础开始讲解

1.部署mysql

创建conf data init三个文件夹 

conf目录存放在mysql配置文件

init目录存放着若依数据库sql文件(从navicat导出的并非若依框架自带sql)

创建一个属于本次若依部署的网段(只有在一个网段的容器才能通过容器名通信)

启动mysql命令  -v是挂载,宿主机文件挂载到容器中 

docker run -d --name mysql -p 3309:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 -v /usr/yxt/mysql/data:/var/lib/mysql -v /usr/yxt/mysql/init:/docker-entrypoint-initdb.d -v /usr/yxt/mysql/conf:/etc/mysql/conf.d --network ruoyinet mysql

通过navicat连接查看

mysql部署成功

2.部署Redis

docker run -d --name redis -p 6379:6379 --network ruoyinet redis

3.部署后端服务

修改 redis和mysql连接的ip地址换为容器名称

上传若依的jar包,并编写一个dockerfile文件

进入Dockerfile文件目录执行命令 打包成镜像

docker build -t ryadmin .

启动镜像为容器

docker run -d --name ryadmin -p 8090:8090 --network ruoyinet ryadmin

 网页测试访问接口或查看容器日志 后端服务启动成功

4.部署前端服务

上传打包好的若依前端

编写nginx.conf 文件


worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/json;sendfile        on;keepalive_timeout  65;server {listen       8091;# 指定前端项目所在的位置location / {root /usr/share/nginx/html/ruoyi-ui;try_files $uri $uri/ /index.html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ryadmin:8090/;
#            rewrite /api/(.*)  /$1 break;
#            proxy_pass http://ramin:8090;}}}

启动docker中nginx镜像并将前端项目与配置文件进行挂载

docker run -d --name nginx -p 8091:8091 -v /usr/yxt/nginx:/usr/share/nginx/html -v /usr/yxt/nginx/nginx.conf:/etc/nginx/nginx.conf --network ruoyinet nginx

访问前端页面 成功

5.使用dockerCompose部署

Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。

先将前面的容器全部删除

编写一个docker-compose.yml文件

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3307:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "/usr/yxt/mysql/data:/var/lib/mysql"- "/usr/yxt/mysql/init:/docker-entrypoint-initdb.d"- "/usr/yxt/mysql/conf:/etc/mysql/conf.d"networks:- ruoyinetredis:image: rediscontainer_name: redisports:- "6379:6379"networks:- ruoyinetryadmin:build: context: /usr/yxt/radmindockerfile: Dockerfilecontainer_name: ryadminports:- "8090:8090"networks:- ruoyinetdepends_on:- mysql- redisnginx:image: nginxcontainer_name: nginxports:- "8091:8091"volumes:- "/usr/yxt/nginx:/usr/share/nginx/html"- "/usr/yxt/nginx/nginx.conf:/etc/nginx/nginx.conf"depends_on:- ryadminnetworks:- ruoyinet
networks:ruoyinet:name: rynet

在docker-compose.yml文件目录下输入命令

docker compose up -d

相关文章:

  • spark3.3.x处理excel数据
  • MySQL的概念和sql语句
  • RabbitMQ原理(四):MQ的可靠性
  • 医学影像乳腺肿瘤分割的同学看过来:PDPNet:用于通用乳腺肿瘤分割的渐进式双先验网络
  • 多线程---wait和notify
  • 【Android知识笔记】插件化专题(二)
  • 一、基础算法精讲:双指针
  • C++大数加法——最简单实现
  • Webpack 基础以及常用插件使用方法
  • 基于GPIO子系统编写LED驱动
  • ChatGPT如何应对用户提出的道德伦理困境?
  • 【开源】基于SpringBoot的车险自助理赔系统的设计和实现
  • 【实战】Kubernetes安装持久化工具NFS-StorageClass
  • 【Python机器学习】零基础掌握RandomForestRegressor集成学习
  • MATLAB中polyvalm函数用法
  • python3.6+scrapy+mysql 爬虫实战
  • 5、React组件事件详解
  • ES6核心特性
  • HTML中设置input等文本框为不可操作
  • If…else
  • Java教程_软件开发基础
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Js基础知识(一) - 变量
  • Linux Process Manage
  • mockjs让前端开发独立于后端
  • 关于字符编码你应该知道的事情
  • 基于 Babel 的 npm 包最小化设置
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 使用API自动生成工具优化前端工作流
  • 物联网链路协议
  • 小程序button引导用户授权
  • 学习ES6 变量的解构赋值
  • 栈实现走出迷宫(C++)
  • 阿里云ACE认证学习知识点梳理
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Linux(权限管理)
  • #控制台大学课堂点名问题_课堂随机点名
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2020)Java后端开发----(面试题和笔试题)
  • (C)一些题4
  • (C语言)字符分类函数
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (windows2012共享文件夹和防火墙设置
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net 生成二级域名
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET中的Exception处理(C#)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Valid和@NotNull字段校验使用
  • [ JavaScript ] JSON方法
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?