将RuoyiCloud部署到云上环境 RuoyiCloud地址: https://gitee.com/y_project/RuoYi-Cloud
默认RuoyiCloud已可以在本地启动,且前台正常登录
本次部署使用kubeSphere,为Linux单节点部署,有条件可以多节点
使用的服务器为阿里云ECS,8c16g
kubeSphere的安装参考之前的文章
云上部署分为以下几个环节
1. 中间件部署
部署RuoyiCloud所需中间件
Mysql,Redis,Nacos
2. 微服务部署
将RuoyiCloud的各个组件打包成镜像发布
2.1 开通阿里云容器镜像服务
其他类似容器服务也可以
2.2 docker登录
#登录dockerlogin--username=德玛西亚所向披靡registry.cn-wulanchabu.aliyuncs.com#输入开通容器服务的密码
2.3 打包镜像
2.3.1 准备Dockerfile
ruoyi项目里已经有基本的Dockerfile,修改下即可使用
2.3.1.1 前端Dockerfile
#基础镜像FROMnginx#authorMAINTAINERzy#挂载目录VOLUME/home/ruoyi/projects/ruoyi-ui#创建目录RUNmkdir-p/home/ruoyi/projects/ruoyi-ui#指定路径WORKDIR/home/ruoyi/projects/ruoyi-ui#复制conf文件到路径COPY ./conf/nginx.conf/etc/nginx/nginx.conf#复制html文件到路径COPY ./html/dist/home/ruoyi/projects/ruoyi-ui
2.3.1.2 后端微服务Dockerfile
后端做了通用的配置,在启动时指定镜像为prod,并指定生产环境nacos
#基础镜像FROMopenjdk:8-jdk#authorMAINTAINERzyENVPARAMS="--server.port=8080 \--spring.profiles.active=prod \--spring.cloud.nacos.discovery.server-addr=his-nacos.his:8848 \--spring.cloud.nacos.config.server-addr=his-nacos.his:8848 \--spring.cloud.nacos.config.namespace=prod \--spring.cloud.nacos.config.file-extension=yml"RUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime&&echo'Asia/Shanghai'>/etc/timezone#复制jar文件到路径COPYtarget/*.jar /app.jar# 启动服务ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]
2.3.2 打包镜像
将jar包和Dockerfile上传到安装了docker的机器
目录如下:
后端jar包放置于target中,符合Dockerfile中指定的目录
前端包放置于html中,符合Dockerfile中指定的目录
2.3.2.1 编译镜像&推送镜像到阿里云
# 编译命令 -f [Dockerfile文件] 可以省略,默认寻找当前目录下Dockerfile文件docker build -t [镜像名:版本] -f [Dockerfile文件] . example: docker build -t ry-system:v1 -f Dockerfile . # 打标签 使标签符合阿里云容器镜像服务的标准docker tag [imageid] [新的标签] example: docker tag [system的镜像id] registry.cn-wulanchabu.aliyuncs.com/mydocker_zy/ry-system:v1 # 推送镜像 在docker login成功的前提下docker push [tag:版本号] example: docker push registry.cn-wulanchabu.aliyuncs.com/mydocker_zy/ry-system:v1
2.4 部署到kubeSphere
使用KubeSphere+Jenkins的方式,编写jenkenis文件来手动的发布
3. 网络环境
需要在k8s环境下联通微服务和各个中间件的网络环境,一般为局域网内连接,不走公网
同样在k8s的搭建中我们看到可以在集群内部使用ClusterIP的方式在集群内部互连
4. 配置分离
即本地环境和生产环境的配置可能不一样,需要配置隔离开,一般通过配置中心解决