# 环境搭建
# 准备工作
1. JDK>=17(推荐17版本)
2. MAVEN>=3.8
3. nodejs 14.X
4. 联系对接人获取开发账号信息、地址信息。
# 必要配置
# 账号信息配置
复制require/.m2/settings.xml文件中的server(harbor-fz-yfzx-bywin-cn-13029、dev-pure-low-code-ssh-server、public-bywin-cloud3),mirror(public-bywin-cloud3) 到maven配置文件settings.xml(文件位置如图)
# HOST文件配置
112.5.142.51 nexus3-fz-yfzx.bywin.cn dev-pure-low-code-ssh-server
127.0.0.1 nacos-nlzx redis-nlzx mysql-nlzx nacos-nlzx.pure-low-code redis-nlzx.pure-low-code minio-nlzx minio-nlzx.pure-low-code rabbitmq-nlzx rabbitmq-nlzx.pure-low-code
# 隧道配置
# 连接服务&配置端口转发
# 进入配置界面
# 配置ssh服务
主机地址:dev-pure-low-code-ssh-server
端口:32169
用户名:root
密码:
# 端口转发配置
注意:本地端口已被占用的话,不会进行转发!需要在本地先关掉占用的进程。
注意:本地端口已被占用的话,不会进行转发!需要在本地先关掉占用的进程。
注意:本地端口已被占用的话,不会进行转发!需要在本地先关掉占用的进程。
127.0.0.1:8848->nacos-nlzx:8848
127.0.0.1:9848->nacos-nlzx:9848
127.0.0.1:9849->nacos-nlzx:9849
127.0.0.1:3306->mysql-nlzx:3306
127.0.0.1:6379->redis-nlzx:6379
127.0.0.1:9000->minio-nlzx:9000
127.0.0.1:5672->rabbitmq-nlzx:5672
# 运行
例子:尝试进入nacos
涉及到密码的配置,推荐都配置在nacos上
http://localhost:8848/nacos
nacos
nacos
查看自己命名空间是否存在,若不存在则新建命名空间
# 运行项目
# 后端
前提:需要先启动相关基础服务jar包:如bywin-gateway,bywin-system,bywin-auth等。 基础服务启动后再导入开发服务进行开发 基础服务项目地址:http://code.bywin.cn:18181/x40/bywin-cloud3-jdk8-platform-services.git (需找管理员授权账号) 开发服务项目地址:http://code.bywin.cn:18181/x40/bywin-cloud3-services.git (需找管理员授权账号)
# 基础服务启动流程
1.下拉git代码,拉取maven依赖,导入成功后如下图所示
其中system、auth为本地开发必要启动服务,其他根据业务需求启动
2.
配置系统环境变量
将在NACOS自定义的命令空间加入系统环境变量,变量名称BYWIN_CLOUD_NACOS_NAMESPACE,加入后重启IDEA生效
3.
启动项目
如启动system,找到其main方法启动即可
# 前端
# 安装依赖
推荐使用 yarn
进行依赖管理
# 全局安装 yarn
npm install -g yarn
# 依赖安装
yarn install
# 如果很慢,设置为国内源
yarn config set registry http://registry.npm.taobao.org/
# 然后再重新 yarn
yarn
# 项目启动
yarn run serve
# 部署项目
# 后端
采用idea插件实现
proflies 勾选开发环境 env-bywin-14021
或者不勾选(默认dev)
# 1.1直接部署jar包(推荐)
# 1.2推送镜像,并部署镜像
(不推荐,慢,需要找管理员开通harbor,dev-bywin-cloud3项目权限)
# 2.命令行方式:
进入到项目目录:
# 2.1直接部署jar包(推荐)
mvn bywin-cloud:k8s-run-jar
# 2.2推送镜像,并部署镜像(不推荐)
mvn bywin-cloud:k8s-run-image
# 前端
# 部署说明
- 基座下的应用因为对外提供服务的端口并不一定会有多个,因此所有前端服务将通过统一的 nginx 代理,每一个需要上线的应用,都需要配置本应用自己的
uri
前缀,就是vue.config.js
中的publicPath
, 使用基座所提供的前端框架可以直接在.env
文件中修改VUE_APP_PUBLIC_PATH
,具体的值可以直接使用项目名称,可以和基座的前端负责人提前约定 - 现场环境所使用的
applicationId
可能和测试环境不一致,那么在开发的时候可以在main.js
中的initApp
函数中增加判断,通过获取 url 地址进行判断,判断为测试环境就设置为测试环境的applicationId
,其余情况就设置为生产环境的applicationId
# 打包前端
yarn run build
# 打包镜像
本地需要安装
docker
环境修改
docker
的Docker daemon configuration file
配置文件,在insecure-registries
中新增一项harbor-fz-yfzx.bywin.cn:13029
配置 hosts
112.5.142.51 harbor-fz-yfzx.bywin.cn
根目录需要创建 Dockerfile
需要 nginx.conf 文件
Dockerfile
#base mirror
FROM nginx:1.23.1
# 复制nginx 配置文件到镜像
COPY ./nginx.conf /etc/nginx/nginx.conf
# 复制前端打包文件到镜像,后面的地址将是镜像中 nginx 配置 root 的地址
COPY ./dist /opt/dist
# 镜像开放端口, 和 nginx 中所配置的端口一致即可
EXPOSE 8009
- 打包命令
- web_name: 前端项目名称, 同时作为前端镜像名称
- project_name: harbor 的项目名称
- harbor_address: harbor 仓库地址
- harbor_port: harbor 端口
- harbor_user: harbor 账号名称
- version: 镜像版本号,一般默认为latest
- password.txt 里面主要是放仓库镜像密码
可写入到一个 sh 脚本快速执行
# web_name 是镜像名称, .是Dockerfile所在目录
docker build -t ${web_name} .
# 打标签, web是镜像名称, latest代表版本, ${harbor_address}:${harbor_port}/${project_name}/${web_name} 镜像仓库地址
docker tag ${web_name}:${version} ${harbor_address}:${harbor_port}/${project_name}/${web_name}:${version}
# 登录镜像仓库
cat password.txt | docker login --username ${harbor_user} --password-stdin ${harbor_address}:${harbor_port}
# 推送镜像
docker push ${harbor_address}:${harbor_port}/${project_name}/${web_name}:${version}
# 删除本地镜像
docker rmi ${harbor_address}:${harbor_port}/${project_name}/${web_name}:${version}
# 前端构建简易方式
前提:请全局更换one-stop-temp
为你的项目名称
- 本地安装 docker
- 更换以下脚本的相关配置信息,脚本命名为
makefile.sh
- harbor_user:harbor 的账户
- harbor_project_name: 的项目空间名称
- project_name:本项目镜像名称
- 项目中的password.txt里面的密码改成harbor 的密码
- 执行脚本
sh makefile.sh
- 完成后,镜像将推送到harbor仓库,后续可以在 k8s 上进行部署
#!/bin/bash
version=""
# 配置 hosts 112.5.142.51 harbor-fz-yfzx.bywin.cn
harbor="harbor-fz-yfzx.bywin.cn:13029" # Harbor 的域名地址
harbor_user="harbor_user" # Harbor 的登录用户名
harbor_project_name="bywin-cloud3-web" # 在 Harbor 中创建的项目空间名称
project_name="one-stop-temp-web" # 本项目名称
if [ ! -n "$1" ]
then
echo "=======未输入版本号,默认:latest=========="
version="latest"
else
version=$1
fi
back_version=$(date "+%Y%m%d%H%M%S") # 备份版本号
echo "=======当前版本号为=>$version=========="
echo "=======打包镜像=========="
docker build -t $project_name .
echo "=======标记=========="
docker tag $project_name:latest $harbor/$harbor_project_name/$project_name:$version
docker tag $project_name:latest $harbor/$harbor_project_name/$project_name:$back_version
echo "#登录"
# password.txt中填写登录 harbor 的密码,变量harbor_user是用户名
cat password.txt | docker login --username $harbor_user --password-stdin $harbor
echo "#推送"
docker push $harbor/$harbor_project_name/$project_name:$version
docker push $harbor/$harbor_project_name/$project_name:$back_version
echo "=======删除镜像=========="
docker rmi $harbor/$harbor_project_name/$project_name:$version
docker rmi $harbor/$harbor_project_name/$project_name:$back_version
# k8s部署前端
前端构建镜像之后,统一是在 k8s 上进行部署,下面会就前端部署做出说明
# 具体步骤
harbor 配置 拉取镜像需要配置镜像仓库地址以及对应权限的账号密钥,在 k8s 中可以在
企业空间/项目空间/配置/保密配置
中新增相关配置,这个配置一般只需要在第一次配置一下,后面如果新的应用都在一个仓库中,可以不需要再次配置,但前提是这边配置的账号是有对应权限的镜像仓库地址和信息可以询问项目负责人
nginx 在线配置 有些时候需要调整 nginx 配置以适配新的需求,而每次修改镜像中的 nginx 又需要重新打镜像,因此这边采用配置字典作为 nginx 的配置文件,挂载到工作负载中,实现一个在线修改 nginx 的功能,当然修改之后依旧是需要重新创建相关的工作负载才能生效
建立工作负载 本步骤需要开始创建工作负载,这个对于前端来说其实就是相当于一个 nginx 的服务,当然也可以是 Tomcat 创建完成之后就会在列表中出现了,这时候就会自动拉取镜像,等待一段时间,这时候可以先去走下一步,当列表的状态字段显示为绿色,说明创建完成了
根据工作负载建立服务 工作负载需要建立对应服务才能对外提供服务,这边前端提供给基座这边的地址只需要到服务的内部访问端口即可
查看服务端口 建立服务之后,需要将对应的前端服务及访问端口提供给对应的项目负责人,项目负责人将会协调资源进行配置后,该应用的对外访问地址,将会是基座的服务地址加上本应用唯一的 uri 前缀进行访问,比如基座访问地址为
http://domain/
,本应用内置的统一前缀为/web_name
,那么本应用的对外访问地址就是http://domain/web_name/
镜像地址就填写: ${harbor_address}:${harbor_port}/${project_name}/${web_name}:${version}
镜像地址根据实际的来, 就是推送到哪里, 就用哪里的镜像地址
- 注意: 如果部署之后, 控制台报错跨域, 那么请检查 nginx 的配置是否包含了跨域配置, 没有的话, 需要添加一下