Ubuntu环境docker部署若依RuoYi-Cloud【保姆级】
目录
前言
通过开源若依RuoYi-Cloud微服务项目(前后端),结合其说明文档,学习下docker部署和微服务。
一、环境和基础安装
1. Ubuntu版本
# 查看
cat /proc/version
2. docker安装
# 安装
apt install docker.io
# 查看安装位置
sudo docker info | grep "Docker Root Dir"
3. docker-compose安装
由于git网址访问不到,采用离线的方式下载,把下载的安装包丢到/usr/local/bin/docker-compose目录下(随便指定个目录就好),然后执行下面:
# 设置权限
chmod +x /usr/bin/docker-compose
# 建立链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看安装位置
which docker-compose
4. docker和linux的一些常用操作命令
# 守护式方式创建容器
docker run -di --name 容器名称 镜像名称:标签
# 登录守护式容器方式
docker exec -it 容器名称|容器ID /bin/bash
# 停止/启动容器
docker stop 容器名称|容器ID
docker start 容器名称|容器ID
# 移除容器
docker rm 容器名称|容器ID
# 移除镜像
docker rmi 镜像名称|镜像ID
# 拷贝容器文件
docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 查看正在运行/所有/停止的容器
docker ps
docker ps -a
docker ps -f status=exited
# 查看已安装的镜像
docker image ls
# 查看容器启动日志
docker logs -f -t 容器名称或者容器id
docker logs -t --tail=50 容器名称或容器id
docker logs -t --since="2022-09-22T09:10:00" 容器名称或容器id
docker logs -t --since="2022-09-22T09:10:00" --until "2022-09-22T09:20:00" 容器名称或容器id
# docker-compose前台启动
docker-compose up
# docker-compose后台启动
docker-compose up -d
二、若依微服务项目配置修改和打包
代码拉下来后,建议先在本地跑通整个项目,再修改一些配置打包丢上docker部署。现在需要在原来的配置文档上进行一部分修改。
1. mysql
修改路径docker/mysql/dockerfile
,当前使用的是8.0版本的,可以根据需要进行修改:
修改当前路径下的文件docker/docker-compose.yml
,修改其中的ruoyi-mysql模块:
2. nacos
路径docker/nacos/conf/application.properties
, 检查下路径和密码:
3. nginx
nginx配置没有什么要修改的,但是需要把前端build的dist文件夹放到对应的路径下:
4. redis
当前redis版本采用的是5.0的,由于Ubuntu版本环境等问题,换其他高版本的redis,在创建容器的时候报错了:
5. ruoyi
修改路径ruoyi-auth/src/main/resources/bootstrap.yml
的ruoyi-auth配置,把地址替换成模块名,后面运行时docker能访问到:
同理,ruoyi-gateway模块和ruoyi-system模块下也需要进行调整:
6. 打包项目
项目配置修改后需要进行打包:
打好的jar包都在每个模块的target底下,比较分散,使用脚本copy.sh
集中copy到docker各级目录下:
最后,把整个docker文件夹copy到虚拟机上:
三、docker容器创建和应用部署
在linux环境下部署,通过docker-compose管理各容器,下面依次通过启动ruoyi-mysql、ruoyi-redis、ruoyi-nacos、ruoyi-gateway、ruoyi-nginx、ruoyi-auth、ruoyi-modules-system各容器部署若依应用。
1. ruoyi-mysql
进入到docker目录下,这个目录下的文件我们在本地已经修改好:
创建mysql容器和启动:
docker-compose -f docker-compose.yml up -d ruoyi-mysql
mysql8.0版本后可能会报Public Key Retrieval is not allowed错误,可能原因是mysql8.0之后默认的认证方式都改为caching_sha2_password了,而我们服务并没有配置sha2相关的插件,可以按照下面操作进行验证和更改:
# 启动容器
docker start ruoyi-mysql
# 进去
docker exec -it ruoyi-mysql /bin/bash
# 登录mysql
mysql -u root -p
# 查看现有的数据库
show databases;
# 选择mysql
use mysql
# 查看plugin设置,如果usr为ROOT的都为caching_sha2_password则需要进行切换
select host, user, plugin from user;
# 修改认证方式,从caching_sha2_password改成mysql_native_password
本地:ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '密码';
远程:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 最后退出重启容器
mysql启动成功后,需要执行mysql目录下两个sql文件:
# 启动容器
docker start ruoyi-mysql
# 将项目内的SQL文件拷贝到mysql容器内部的home下的tmp文件内
sudo docker cp /home/docker/mysql/db/ efa1bb73a7ff:/home/tmp
# 进入容器
docker exec -it ruoyi-mysql /bin/bash
# 登录mysql
mysql -u root -p
# 分别执行两个文件
source /home/tmp/ry_config_20220929.sql
source /home/tmp/ry_20230706.sql
# 最后可以切换数据库查看对应的表
show databases;
show tables;
2. ruoyi-redis
创建redis容器和启动:
docker-compose -f docker-compose.yml up -d ruoyi-redis
版本太高,和其他环境不适配可能会报Fatal: Can’t initialize Background Jobs. Error message: Operation not permitted的错误,需要指定5.0的版本。
3. ruoyi-nacos
创建nacos容器和启动:
docker-compose -f docker-compose.yml up -d ruoyi-nacos
启动报load jdbc.properties error错误,需要检查下mysql里面数据库sql有没有执行成功。
4. 其他容器
创建ruoyi-gateway、ruoyi-nginx、ruoyi-auth、ruoyi-modules-system容器和启动:
docker-compose -f docker-compose.yml up -d ruoyi-gateway ruoyi-nginx ruoyi-auth ruoyi-modules-system
建议每创建一个容器,就看下他的运行状态docker ps
,如果查不到他正在运行,说明运行失败了,需要逐个看日志进行分析,看docker-compose.yml
的依赖关系进行排查。
5. 部署成功
成功后界面正常的打开: