发布时间:2022-08-19 13:15
之前我们已经部署了Nacos部署、数据库MySQL部署 中间件Redis部署。接下来我们开始进行微服务上云部署!
2.1 上云流程
- 打jar包
- 制作镜像
- 推送镜像到仓库(阿里云镜像仓库)
- 应用部署
2.2 Nacos配置
在上一篇nacos安装部署时我们连接了mysql数据库,里面包含服务的配置信息。
下面我们新建一个prod的命名空间,上云后使用正式环境配置文件:
2.3 Dockerfile 文件
FROM openjdk:8-jdk # 作者 LABEL maintainer=LiuShihao #docker run -e PARAMS="--server.port 9090" 注意修改为自己的Nacos地址 ENV PARAMS="--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 COPY target/*.jar /app.jar # 暴露8080端口 因为每个Pod都相当于是一台独立的主机 所以不会端口冲突 EXPOSE 8080 # ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]
即会将
target
目录下的jar
包 复制到 镜像中 /目录下 为app.jar
我们将jar包和Deckerfile文件上传到云服务器上:
2.4 制作镜像
上传完成之后进行解压:
使用docker build命令制作镜像:
docker build -t ruoyi-auth:v1.0 -f Dockerfile .
我们重复之前的步骤,制作出剩下的镜像:
docker images|grep ruoyi
可以直接使用shell脚本来制作镜像vim dockerbuild.sh
#!/bin/env bash cd /root/dockerImages/ruoyi-auth docker build -t ruoyi-auth:v1.0 -f Dockerfile . cd .. cd /root/dockerImages/ruoyi-file docker build -t ruoyi-file:v1.0 -f Dockerfile . cd .. cd /root/dockerImages/ruoyi-gateway docker build -t ruoyi-gateway:v1.0 -f Dockerfile . cd .. cd /root/dockerImages/ruoyi-job docker build -t ruoyi-job:v1.0 -f Dockerfile . cd .. cd /root/dockerImages/ruoyi-monitor docker build -t ruoyi-monitor:v1.0 -f Dockerfile . cd .. cd /root/dockerImages/ruoyi-system docker build -t ruoyi-system:v1.0 -f Dockerfile .
赋可执行权限
chmod +x dockerbuild.sh
2.5 镜像仓库
新建一个命名空间:
# 登录 docker login --username=lius****aowyt registry.cn-shanghai.aliyuncs.com # 打标签 docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:[镜像版本号] # 推送镜像 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:[镜像版本号]
登录阿里云镜像仓库:
给镜像打上标签:
docker tag 0b7cc69aadd8 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:1.0
推送镜像:
docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:1.0
重复上面的操作将其他镜像推送到仓库:
# 给所有镜像打标签 docker tag 0b7cc69aadd8 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:1.0 docker tag cd2945759213 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-file:1.0 docker tag 1d8f0003bdb8 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-gateway:1.0 docker tag cc5f7e7074e5 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-job:1.0 docker tag d328c7686524 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-monitor:1.0 docker tag dce6da82edf4 registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-system:1.0 # 推送镜像 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-auth:1.0 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-file:1.0 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-gateway:1.0 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-job:1.0 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-monitor:1.0 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-system:1.0
2.6 创建阿里云仓库秘钥
2.7 创建无状态服务
也可以直接选择镜像:
协议选择TCP 端口8080
不需要外网访问。
微服务部署完成
我们将所有的微服务按照流程全部部署:
- 打包
- 制作镜像
- 上传镜像仓库
- 修改Nacos配置
- 创建无状态副本集
- 查看容器日志确认部署是否成功
最后我们可以在Nacos的服务列表查看我们部署的项目:
进入
ruoyi-ui
目录,需要修改vue.config.js
文件中的target
地址,这个地址在项目中是请求网关服务的地址,所以我们需要修改为我们部署的网关服务的内网IP或者域名。然后运行打包命令:
npm run build:prod
打包完成后会生成dist目录。
3.1 Dockerfile 文件
# 基础镜像 FROM nginx # author MAINTAINER ruoyi # 挂载目录 VOLUME /home/ruoyi/projects/ruoyi-ui # 创建目录 RUN mkdir -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
有一个COPY的操作:
是将html
目录下的dist
目录复制到容器内的/home/ruoyi/projects/ruoyi-ui
地址。dist
就是我们打包好的前端文件。3.2 Nginx配置
修改nginx,cong配置文件:
- 修改
server_name
为_
。- 修改RuoYi网关服务的域名。
3.3 上传服务器
将nginx目录压缩上传服务器:
3.4 制作镜像
上传到服务器后解压后进入目录
# 解压 unzip nginx.zip # 修改dockerfile文件名为Dockerfile mv dockerfile Dockerfile
制作镜像:
docker build -t registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-ui:2.0 -f Dockerfile .
# 查看镜像
docker images |grep ruoyi-ui3.5 上传镜像仓库
# 登录镜像仓库 docker login --username=lius****wyt registry.cn-shanghai.aliyuncs.com # 推送镜像 docker push registry.cn-shanghai.aliyuncs.com/lsh_ruoyi/ruoyi-ui:2.0
3.6 部署无状态服务
选择镜像:
注意Nginx需要指定端口为:
80
注意需要选择外网暴露:
创建完成。
至此,RuoYi微服务项目的前后端部署都以完成了。
通过任意主机的公网IP加上暴露的端口进行访问测试:
账号:admin
密码:admin123
注意:需要先将MySQL、Redis服务启动完成后,才能将Nacos启动成功,RuoYi微服务才能启动成功。
如果服务没有启动成功,有可能是因为依赖的中间件或者服务还为启动成功,重新部署即可。我们可以设置一个健康检查器,来做一个就绪检查: