意料之中的意外
接昨天继续部署,早上开机,毫无意外的出现了意外。
- 问题:
打开虚拟机,FinalShell连接上去,先启动base环境正常,再启动modules,5秒钟后发现少了一个,查看日志发现system模块启动报mysql连接异常。 - 解决:
1.查看nacos中system的配置文件,redis以及mysql的节点配置都采用ip地址,并且与目前其他项目的连接字符串仔细对比,确认无误。
2.navicat连接mysql正常
3.Idea中修改bootstrap文件中注册地址为虚拟机IP,本地IDE中启动服务正常
怀疑container内使用container的ip地址访问出了问题,也是我昨天隐约感觉有问题,不知道再次启动docker之后它的ip地址会不会改变。进入nacos修改system服务的配置文件,将container(包括redis和mysql)的IP地址都修改为虚拟机的ip,发布,再次启动modules,恢复正常。
部署前端
打包前端代码
- 方式一:windows资源管理器,进入到ruoyi-ui文件夹下的bin目录中,先运行
package.bat
安装依赖。正确执行完毕之后再双击build.bat进行打包输出到ruoyi-ui\dist
目录下 - 方法二:在IDE中进行。常用的IDE如
vscode
或者Idea
都可以。打开终端,进入到ruoyi-ui
目录下(与package.json
同级目录)执行命令
npm install --registry=https://regist.npmmirror.com
再执行
npm run build:prod
正确执行后就会再ruoyi-ui
目录下看到dist
目录输出了
部署到服务器
之前部署后端的时候dist目录尚未生成,copy.sh
文件执行的时候是没有内容复制过去的,这影响nginx镜像的构建,所以现在当我们在浏览器中输入http://虚拟机ip进行访问的时候要么报错,要么出来的登录页上不会显示验证码。手动将dist目录下的文件直接传到虚拟机服务器上的aServer\nginx\html\dist
目录下
- 重新构建nginx镜像
1.停止container
docker-compose stop
2.删除container
docker ps -a
docker rm [containerid]
3.删除image
docker rmi [imageid]
4.重新构建镜像并运行直接使用.deploy.sh的命令执行即可
./deploy.sh base
./deploy.sh modules
正常情况下访问http://虚拟机ip
就会出现ruoyi的登录页面的,验证码也出来了。输入验证码登录就可以看到熟悉的页面了。
到这里,前后端都能运行起来了。还有一些其他的问题需要去结局的,查看nacos中,ruoyi-file-dev.yml
配置文件,根据自己的情况修改文件存储路径或者其他系统的访问信息。