# 环境搭建

# 准备工作

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(文件位置如图)

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

# 隧道配置

下载tabby软件 (opens new window)

# 连接服务&配置端口转发

# 进入配置界面

添加ssh服务

# 配置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

# 运行

tabby运行图


例子:尝试进入nacos

涉及到密码的配置,推荐都配置在nacos上

http://localhost:8848/nacos


nacos

nacos

登录nacos图

查看自己命名空间是否存在,若不存在则新建命名空间

image-20230724142553667

# 运行项目

# 后端

前提:需要先启动相关基础服务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依赖,导入成功后如下图所示 img.png

其中system、auth为本地开发必要启动服务,其他根据业务需求启动


2. 配置系统环境变量


将在NACOS自定义的命令空间加入系统环境变量,变量名称BYWIN_CLOUD_NACOS_NAMESPACE,加入后重启IDEA生效 img_1.png


3. 启动项目
如启动system,找到其main方法启动即可 img_2.png

# 前端

# 安装依赖

推荐使用 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包(推荐)

k8s-run-jar

# 1.2推送镜像,并部署镜像

(不推荐,慢,需要找管理员开通harbor,dev-bywin-cloud3项目权限)

k8s-run-image

# 2.命令行方式:

进入到项目目录:

open-in-terminal

# 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 环境

  • 修改 dockerDocker 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为你的项目名称

  1. 本地安装 docker
  2. 更换以下脚本的相关配置信息,脚本命名为makefile.sh
  • harbor_user:harbor 的账户
  • harbor_project_name: 的项目空间名称
  • project_name:本项目镜像名称
  1. 项目中的password.txt里面的密码改成harbor 的密码
  2. 执行脚本 sh makefile.sh
  3. 完成后,镜像将推送到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 中可以在企业空间/项目空间/配置/保密配置中新增相关配置,这个配置一般只需要在第一次配置一下,后面如果新的应用都在一个仓库中,可以不需要再次配置,但前提是这边配置的账号是有对应权限的

    镜像仓库地址和信息可以询问项目负责人 创建 harbor 字典 创建 harbor 字典

  • nginx 在线配置 有些时候需要调整 nginx 配置以适配新的需求,而每次修改镜像中的 nginx 又需要重新打镜像,因此这边采用配置字典作为 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 的配置是否包含了跨域配置, 没有的话, 需要添加一下