Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nuxt-backend-helper
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王曜嵚 Wang Yaoqin
nuxt-backend-helper
Commits
7b3aafd7
Commit
7b3aafd7
authored
Apr 02, 2026
by
王曜嵚 Wang Yaoqin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-temp' into 'dev'
dev: 调整代码,适配本地化部署 See merge request
!1
parents
c713c968
bd502e44
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
260 additions
and
30 deletions
+260
-30
README.md
README.md
+123
-4
deploy.sh
deploy.sh
+35
-0
nuxt.config.ts
nuxt.config.ts
+6
-6
update_status.sql
public/files/postgres/update_status.sql
+11
-0
settings.xml
public/files/settings.xml
+18
-0
application-gateway.properties
public/files/v2/application-gateway.properties
+1
-1
install.post.ts
server/api/devops/v1/install.post.ts
+5
-5
compile.post.ts
server/api/devops/v2/compile.post.ts
+4
-2
install.post.ts
server/api/devops/v2/install.post.ts
+26
-10
stop.post.ts
server/api/devops/v2/stop.post.ts
+1
-0
prepare_postgres.ts
server/plugins/prepare_postgres.ts
+21
-1
docker.ts
server/utils/docker.ts
+1
-1
server.ts
server/utils/server.ts
+8
-0
No files found.
README.md
View file @
7b3aafd7
# 说明
#
#
说明
该项目是方便前端开发者快速启动后端服务,切换服务分支。
如果前端本地开发要同时启动
`IDEA`
以及后端服务,电脑性能不足时会很卡,通过将后端服务部署在
`192.168.0.4`
服务器上,前端通过接口调用的方式获取后端数据,这样前端仅需要启动前端服务即可。
# 备注
[
安装文档
](
./docs/安装.md
)
当前端开发电脑性能足够时,仍然可以使用本程序,帮助快速启动后端服务,避免前端开发人员操作
`Java`
`IDEA`
`Maven`
时造成的各种问题。
**在本地使用此项目时,请将后续文档中的 `192.168.0.4` 替换为你的本机地址**
。
## 功能特性
-
容器化部署
-
一键编译、运行
`v2`
和
`v1`
后端
-
自定义
`properties`
文件参数
-
浏览器端
`Vscode`
窗口显示容器内容
### 环境要求
-
`Docker`
-
`Node v22 及以上版本`
-
`Git Bash`
或其他类 Unix 环境仿真与命令行交互软件
### 安装及部署
运行 npm 命令安装依赖及编译项目产物
```
bash
npm
install
npm run build
```
使用
`Docker`
命令生成主容器,用于存放、运行辅助程序
```
bash
docker run
-d
\
--name
logwire_backend_helper.main
\
-p
30000:3000
\
--add-host
=
host.docker.internal:host-gateway
\
node:22
\
sh
-c
"(cd /var/nuxt-backend-helper/.output && PORT=8080 node ./server/index.mjs) & sleep infinity"
```
创建主容器成功后,需要自行下载
`openlogic-openjdk-8u442-b06-linux-x64.tar.gz`
和
`openlogic-openjdk-17.0.10+7-linux-x64.tar.gz`
作为切换
`v1`
和
`v2`
时的
`Java`
环境,
[
点击跳转下载地址
](
https://www.openlogic.com/openjdk-downloads
)
> 如果发现版本发生变化,或网站上已不存在某版本时,咨询后端人员需要哪个版本,并全文检索替换版本号,然后重新打包编译
```
bash
docker
cp
openlogic-openjdk-8u442-b06-linux-x64.tar.gz logwire_backend_helper.main:/var/openlogic-openjdk-8u442-b06-linux-x64.tar.gz
docker
cp
openlogic-openjdk-17.0.10+7-linux-x64.tar.gz logwire_backend_helper.main:/var/openlogic-openjdk-17.0.10+7-linux-x64.tar.gz
```
调用
`deploy.sh`
命令,将项目产物复制到主容器内部
```
bash
bash deploy.sh
```
进入容器后调用
`node`
命令,启动项目产物,启动后可以通过
`192.168.0.4:30000`
访问到辅助程序界面
```
bash
docker
exec
-it
logwire_backend_helper.main bash
```
```
bash
# 在服务器环境下
cd
/var/nuxt-backend-helper/.output
&&
node ./server/index.mjs
# 在本机环境下,设置 NUXT_ENV 参数后,会额外安装 redis, zookeeper, rocket mq 等容器
cd
/var/nuxt-backend-helper/.output
&&
NUXT_PG_HOST
=
host.docker.internal
NUXT_PUBLIC_DOCKER_HOST
=
host.docker.internal
NUXT_ENV
=
dev node /var/nuxt-backend-helper/.output/server/index.mjs
```
### 使用
#### 登录界面
在访问
`192.168.0.4:30000`
后,可以看到以下界面,在输入框内输入用户名,点击登录。
> 用户名随意,只要不与其他开发人员重复即可,往往采用开发人员姓名拼音

#### 项目界面
首次登录用户,进入首页后如图

此时
`logwire-v1`
和
`logwire-v2`
系统都还未初始化,点击
`logwire-v2`
旁的初始化按钮
> 因为开发的先后顺序,所以必须先初始化 `logwire-v2` ,再初始化 `logwire-v1`

在初次初始化时,
**肯定**
会失败,这是因为
`gitlab`
的用户没有和容器内的
`git`
环境关联,现在需要将提示中的
**加粗字体**
,放入到
`gitlab ssh`
设置中,并重新点击初始化,耗时较久

全部初始化后,右侧按钮会变为
`编译`
和
`运行`
> `运行` 按钮需要在执行一次编译后才会显示

##### logwire-v2 操作
除了常规的
`编译`
`运行`
按钮,对于
`logwire-v2`
系统还具有以下操作:
*
`切换分支`
:跳转到
[
切换分支
](
./docs/分支.md
)
页面
*
`修改配置`
:跳转到
[
修改配置
](
./docs/配置.md
)
页面
*
`打开 Vscode`
: 打开容器内
`logwire-v2`
的目录页
*
`调试`
:执行调试程序。
*
`打包微信压缩文件`
:为了方便设计器打包小程序文件后,快速的下载打包文件。在设计器内,点击了
`打包微信小程序`
后,执行对应程序,打包结束后,点击此按钮,可以将小程序所需要的页面文件打包,然后下载后放置到小程序目录,就可以在本地开发小程序时,看到设计器内更改后的页面效果。
##### 编译
点击
`编译`
按钮后,会打包后端程序。首次点击时耗费时间久,是为了下载后端打包所需要的文件。
##### 运行
点击
`运行`
按钮后,等待一段时间,出现提示后,设置对应的配置即可启动服务

此时提示内容如下
> TIP: 请代理后端请求到 192.168.0.4:30001, 开发环境域名和端口号为 a.test.com:23335,a.test.com:23336,a.test.com:29000
需要前端开发者将
`vue.config.js`
配置文件中,关于
`devServer`
的接口代理到
`http://192.168.0.4:30001`
地址上。并且只有
`a.test.com:23335,a.test.com:23336,a.test.com:29000`
这些
`host`
地址可以访问该后端程序,这是
`logwire`
的后端框架决定的。
##### 调试
调试需要在
[
配置
](
./docs/配置.md
)
页面,输入后端开发者的 ip 地址。在编译
`logwire-v2`
系统后,点击调试按钮。会将后端的
`IDEA`
的远程调试工具连接到容器内的
`java`
程序。
> 如果系统正在运行,必须先停止!
##### logwire-v1 操作
除了常规的
`编译`
`运行`
按钮,对于
`logwire-v1`
系统还具有以下操作:
*
`切换分支`
:跳转到切换分支页面
*
`修改配置`
:跳转到修改配置页面
*
`打开 Vscode`
: 打开容器内
`logwire-v1`
的目录页
[
使用文档
](
./docs/登录.md
)
deploy.sh
0 → 100644
View file @
7b3aafd7
#!/bin/bash
CONTAINER
=
"logwire_backend_helper.main"
echo
"=== 1. 关键:先把所有软链接转换成真实文件(模仿7-Zip)==="
# 递归复制 .output 为新目录,自动把软链接变成真实文件
cp
-rL
.output .output_real
echo
-e
"
\n
=== 2. 打包真实文件目录(无任何软链接)==="
tar
-cf
.output.tar .output_real
echo
-e
"
\n
=== 3. 复制到容器 ==="
docker
cp
.output.tar
"
${
CONTAINER
}
:/var/"
echo
-e
"
\n
=== 4. 容器内解压并重命名为标准目录 ==="
docker
exec
"
${
CONTAINER
}
"
sh
-c
'
cd /var
rm -rf nuxt-backend-helper
mkdir -p nuxt-backend-helper
mv .output.tar nuxt-backend-helper/
cd nuxt-backend-helper
# 解压
tar -xf .output.tar
# 把复制后的目录重命名回标准名称 .output
mv .output_real .output
# 清理
rm -f .output.tar
echo -e "\n✅ 部署完成!所有软链接已转为真实文件(和7-Zip一致)"
'
# 本地清理
rm
-rf
.output_real .output.tar
echo
-e
"
\n
🎉 成功!"
\ No newline at end of file
nuxt.config.ts
View file @
7b3aafd7
...
...
@@ -10,13 +10,13 @@ export default defineNuxtConfig({
}
},
runtimeConfig
:
{
pgUser
:
''
,
pgPort
:
''
,
pgHost
:
''
,
pgPassword
:
''
,
pgDatabase
:
''
,
pgUser
:
'
postgres
'
,
pgPort
:
'
25556
'
,
pgHost
:
'
192.168.0.4
'
,
pgPassword
:
'
postgres
'
,
pgDatabase
:
'
postgres
'
,
public
:
{
dockerHost
:
''
dockerHost
:
'
192.168.0.4
'
}
}
})
public/files/postgres/update_status.sql
0 → 100644
View file @
7b3aafd7
UPDATE
v2
SET
status
=
CASE
WHEN
status
IN
(
'running'
,
'launched'
,
'compiling'
,
'compiled'
,
'created'
)
THEN
'created'
ELSE
NULL
END
;
UPDATE
v1
SET
status
=
CASE
WHEN
status
IN
(
'running'
,
'launched'
,
'compiling'
,
'compiled'
,
'created'
)
THEN
'created'
ELSE
NULL
END
;
\ No newline at end of file
public/files/settings.xml
View file @
7b3aafd7
...
...
@@ -4,6 +4,24 @@
http://maven.apache.org/xsd/settings-1.0.0.xsd"
>
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>
nexus-aliyun
</id>
<mirrorOf>
central
</mirrorOf>
<name>
Nexus aliyun
</name>
<url>
https://maven.aliyun.com/repository/central
</url>
</mirror>
<mirror>
<id>
nexus.grea.member
</id>
<mirrorOf>
*
</mirrorOf>
...
...
public/files/v2/application-gateway.properties
View file @
7b3aafd7
...
...
@@ -34,7 +34,7 @@ logging.level.org.springframework.boot.autoconfigure.logging=error
gateway.mq.name-srv-address
=
192.168.0.190:9876
# Gateway 请求 Backend 超时时间; 默认值:60000; 单位:毫秒
gateway.router-timeout
=
60000
#
gateway.router-timeout=60000
# 环境类型; 默认值:dev; 可选值:dev; uat; prod;
gateway.environment-type
=
dev
# 是否开启 WebSocket 服务
...
...
server/api/devops/v1/install.post.ts
View file @
7b3aafd7
...
...
@@ -18,7 +18,7 @@ export default defineEventHandler(async (event) => {
}
// 创建 postgres 不一定要在本机,即使是 dev 环境也可以联远程的容器
await
LogUtil
.
run
(
username
,
'v1-创建 postgres 容器'
,
async
()
=>
{
if
(
process
.
env
.
N
ODE
_ENV
?.
trim
()
!==
'production'
)
{
if
(
process
.
env
.
N
UXT
_ENV
?.
trim
()
!==
'production'
)
{
let
postgresInfo
=
await
docker
.
checkContainer
(
'postgres_12'
)
if
(
!
postgresInfo
)
{
let
postgres
=
await
docker
.
checkAndCreateContainer
({
name
:
'postgres_12'
,
img
:
'postgres:12'
,
env
:
[
"POSTGRES_PASSWORD=postgres"
],
portBindings
:
{
'5432/tcp'
:
[{
HostPort
:
PgPort
.
toString
()
}]
}
})
...
...
@@ -40,7 +40,7 @@ export default defineEventHandler(async (event) => {
})
await
LogUtil
.
run
(
username
,
'v1-创建 redis 容器'
,
async
()
=>
{
if
(
process
.
env
.
N
ODE
_ENV
?.
trim
()
!==
'production'
)
{
if
(
process
.
env
.
N
UXT
_ENV
?.
trim
()
!==
'production'
)
{
let
redisInfo
=
await
docker
.
checkContainer
(
'redis'
)
if
(
!
redisInfo
)
{
let
redis
=
await
docker
.
checkAndCreateContainer
({
name
:
'redis'
,
img
:
'redis'
,
portBindings
:
{
'6379/tcp'
:
[{
HostPort
:
'6379'
}]
}
})
...
...
@@ -64,9 +64,9 @@ export default defineEventHandler(async (event) => {
await
LogUtil
.
run
(
username
,
'v1-安装 openjdk '
,
async
()
=>
{
// 文件过大,已存储到容器 /var 目录下
await
docker
.
putArchive
({
container
,
tarPath
:
path
.
resolve
(
'/var/openlogic-openjdk-8u4
0
2-b06-linux-x64.tar.gz'
),
targetPath
:
'/var'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'cp -r openlogic-openjdk-8u4
0
2-b06-linux-x64/ java-8-openjdk'
,
dir
:
'/var'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'rm -rf openlogic-openjdk-8u4
0
2-b06-linux-x64'
,
dir
:
'/var'
})
await
docker
.
putArchive
({
container
,
tarPath
:
path
.
resolve
(
'/var/openlogic-openjdk-8u4
4
2-b06-linux-x64.tar.gz'
),
targetPath
:
'/var'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'cp -r openlogic-openjdk-8u4
4
2-b06-linux-x64/ java-8-openjdk'
,
dir
:
'/var'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'rm -rf openlogic-openjdk-8u4
4
2-b06-linux-x64'
,
dir
:
'/var'
})
})
await
LogUtil
.
run
(
username
,
'v1-下载字符集'
,
async
()
=>
{
...
...
server/api/devops/v2/compile.post.ts
View file @
7b3aafd7
...
...
@@ -28,10 +28,12 @@ export default defineEventHandler(async (event) => {
}
catch
(
err
)
{
}
LogUtil
.
print
(
username
,
`[progress] [[1;34mInfo[m] 编译中..... \n`
)
await
docker
.
execContainerCommand
({
container
,
cmd
:
'bash build
-release.sh --module=logwire'
,
dir
:
'/var/logwire-backend
'
,
quiet
:
true
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'bash build-release.sh --module=assemble'
,
dir
:
'/var/logwire-backend'
,
quiet
:
true
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'bash build
.sh backend'
,
dir
:
'/var/logwire-backend/logwire-parent
'
,
quiet
:
true
})
//
await docker.execContainerCommand({ container, cmd: 'bash build-release.sh --module=assemble', dir: '/var/logwire-backend', quiet: true })
try
{
// 打包完成后,移动默认配置文件, 修改配置文件信息
await
docker
.
execContainerCommand
({
container
,
cmd
:
'mkdir frontend frontend/main'
,
dir
:
'/var/logwire-backend/build-output/backend'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'touch index.html'
,
dir
:
'/var/logwire-backend/build-output/backend/frontend/main'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'mv -f ../tenants_config build-output/backend/'
,
dir
:
'/var/logwire-backend'
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'chmod 755 build-output/backend/transform-miniapp.sh'
,
dir
:
'/var/logwire-backend'
})
}
catch
(
err
)
{
...
...
server/api/devops/v2/install.post.ts
View file @
7b3aafd7
...
...
@@ -22,6 +22,13 @@ export default defineEventHandler(async (event) => {
container
=
await
docker
.
checkAndCreateContainer
({
name
:
username
+
'.node'
,
img
:
'node:16-bullseye'
,
cmd
:
[
'sh'
,
'-c'
,
`
(code-server --bind-addr 127.0.0.1:8000 --auth none) &
(nginx) &
sleep infinity
`
],
exposedPorts
:
{
'8080/tcp'
:
{}
},
portBindings
:
{
'8080/tcp'
:
[{
HostPort
:
port
}]
}
})
...
...
@@ -50,32 +57,41 @@ export default defineEventHandler(async (event) => {
await
stopPgClient
(
client
)
}
})
console
.
log
(
'process.env.NUXT_ENV '
,
process
.
env
.
NUXT_ENV
)
await
LogUtil
.
run
(
username
,
'创建 redis 容器'
,
async
()
=>
{
if
(
process
.
env
.
NODE_ENV
?.
trim
()
!==
'production'
)
{
try
{
if
(
process
.
env
.
NUXT_ENV
?.
trim
()
!==
'production'
)
{
let
redisInfo
=
await
docker
.
checkContainer
(
'redis'
)
if
(
!
redisInfo
)
{
let
redis
=
await
docker
.
checkAndCreateContainer
({
name
:
'redis'
,
img
:
'redis'
,
portBindings
:
{
'6379/tcp'
:
[{
HostPort
:
'6379'
}]
}
})
await
docker
.
startContainer
({
container
:
redis
})
}
}
}
catch
(
err
)
{
console
.
log
(
'创建 redis 容器异常: '
+
err
)
}
})
await
LogUtil
.
run
(
username
,
'创建 zookeeper 容器'
,
async
()
=>
{
if
(
process
.
env
.
NODE_ENV
?.
trim
()
!==
'production'
)
{
try
{
if
(
process
.
env
.
NUXT_ENV
?.
trim
()
!==
'production'
)
{
let
zookeeper
=
await
docker
.
checkAndCreateContainer
({
name
:
'zookeeper'
,
img
:
'zookeeper'
,
portBindings
:
{
'2181/tcp'
:
[{
HostPort
:
'2181'
}]
}
})
await
docker
.
startContainer
({
container
:
zookeeper
})
}
}
catch
(
err
)
{
console
.
log
(
'创建 zookeeper 容器异常: '
+
err
)
}
})
// 检查本机 rocketmq 端口是否被占用,被占用说明已经有 rockqtmq 服务启动,这时候就不安装容器了
await
LogUtil
.
run
(
username
,
'创建 rocketmq serv 容器'
,
async
()
=>
{
if
(
process
.
env
.
N
ODE
_ENV
?.
trim
()
!==
'production'
)
{
if
(
process
.
env
.
N
UXT
_ENV
?.
trim
()
!==
'production'
)
{
let
rockermqsrv
=
await
docker
.
checkAndCreateContainer
({
name
:
'rocketmq.srv'
,
img
:
'foxiswho/rocketmq:4.8.0'
,
portBindings
:
{
'9876/tcp'
:
[{
'HostPort'
:
'9876'
}]
/** , '10909/tcp': [], '10911/tcp': [], '10912/tcp': []*/
},
env
:
[
'JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m'
]
,
cmd
:
[
'bash'
,
'-c'
,
'mqnamesrv'
]
})
await
docker
.
startContainer
({
container
:
rockermqsrv
})
}
})
await
LogUtil
.
run
(
username
,
'创建 rocketmq broker 容器'
,
async
()
=>
{
if
(
process
.
env
.
N
ODE
_ENV
?.
trim
()
!==
'production'
)
{
if
(
process
.
env
.
N
UXT
_ENV
?.
trim
()
!==
'production'
)
{
let
rocketmqbroker
=
await
docker
.
checkAndCreateContainer
({
name
:
'rocketmq.broker'
,
img
:
'foxiswho/rocketmq:4.8.0'
,
portBindings
:
{
'10909/tcp'
:
[{
'HostPort'
:
'10909'
}],
'10911/tcp'
:
[{
'HostPort'
:
'10911'
}]
/** , '9876/tcp': [],'10912/tcp': [] */
},
env
:
[
'JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m'
]
})
await
docker
.
startContainer
({
container
:
rocketmqbroker
})
...
...
server/api/devops/v2/stop.post.ts
View file @
7b3aafd7
...
...
@@ -12,6 +12,7 @@ export default defineEventHandler(async (event) => {
await
changeProjectStatus
(
'v2'
,
username
,
'status'
,
'stopping'
)
await
docker
.
execContainerCommand
({
container
,
cmd
:
'pm2 delete backend'
,
quiet
:
true
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'pm2 delete gateway'
,
quiet
:
true
})
await
docker
.
execContainerCommand
({
container
,
cmd
:
'pm2 delete compile'
,
quiet
:
true
})
LogUtil
.
print
(
username
,
`程序已停止`
)
await
changeProjectStatus
(
'v2'
,
username
,
'status'
,
'compiled'
)
...
...
server/plugins/prepare_postgres.ts
View file @
7b3aafd7
...
...
@@ -7,7 +7,22 @@ export default defineNitroPlugin(async (nitroApp) => {
if
(
!
postgres
)
{
postgres
=
await
docker
.
checkAndCreateContainer
({
name
:
'postgres_12'
,
img
:
'postgres:12'
,
env
:
[
"POSTGRES_PASSWORD=postgres"
],
portBindings
:
{
'5432/tcp'
:
[{
HostPort
:
PgPort
.
toString
()
}]
}
})
await
docker
.
startContainer
({
container
:
postgres
})
// 在初次创建 Postgres 容器时,容器启动会等待20s左右,此时连接会报错
// 循环十次创建客户端
let
temp
for
(
let
i
=
1
;
i
<=
20
;
i
++
)
{
try
{
await
sleep
(
3000
)
temp
=
await
createPgClientFactory
()
}
catch
(
err
)
{
console
.
log
(
'[ERROR] 第'
+
i
+
'次连接 POSTGRES 失败'
)
if
(
i
===
20
)
{
console
.
log
(
'[ERROR] 所有轮询失败,请检查代码及IP配置'
)
}
}
finally
{
temp
&&
await
stopPgClient
(
temp
)
}
}
}
else
{
await
docker
.
startContainer
({
container
:
postgres
})
await
sleep
(
3000
)
...
...
@@ -23,5 +38,10 @@ export default defineNitroPlugin(async (nitroApp) => {
await
executePgQuery
({
client
,
query
:
fs
.
readFileSync
(
path
.
resolve
(
'./public/files/postgres/create_v2.sql'
),
{
encoding
:
'utf-8'
})})
await
executePgQuery
({
client
,
query
:
fs
.
readFileSync
(
path
.
resolve
(
'./public/files/postgres/create_v1.sql'
),
{
encoding
:
'utf-8'
})})
await
stopPgClient
(
client
)
}
else
{
await
stopPgClient
(
client
)
client
=
await
createPgClientFactory
(
'backend_helper'
)
await
executePgQuery
({
client
,
query
:
fs
.
readFileSync
(
path
.
resolve
(
'./public/files/postgres/update_status.sql'
),
{
encoding
:
'utf-8'
})})
await
stopPgClient
(
client
)
}
})
\ No newline at end of file
server/utils/docker.ts
View file @
7b3aafd7
...
...
@@ -182,5 +182,5 @@ class Docker {
export
function
createDockerFactory
(
username
:
string
)
{
const
DOCKERHOST
=
useRuntimeConfig
().
public
.
dockerHost
return
new
Docker
(
process
.
env
.
N
ODE
_ENV
===
'development'
?
'localhost'
:
DOCKERHOST
,
username
)
return
new
Docker
(
process
.
env
.
N
UXT
_ENV
===
'development'
?
'localhost'
:
DOCKERHOST
,
username
)
}
\ No newline at end of file
server/utils/server.ts
View file @
7b3aafd7
...
...
@@ -4,6 +4,7 @@ import lodash from 'lodash'
import
{
Telnet
}
from
'telnet-client'
import
{
getPgTableData
}
from
'./postgres'
const
config
=
useRuntimeConfig
()
// 在目标服务器上,获取 node 可用的端口
export
async
function
getAvailableNodePort
(
ip
:
string
,
startPort
=
30000
)
{
...
...
@@ -60,6 +61,8 @@ export async function copyAndCreateServerPropertiesV2InDocker (username: string)
const
userDefaultSetting
=
JSON
.
parse
(
userDefaultSettingStr
)
const
fn
=
(
f
:
(
obj
:
Record
<
string
,
any
>
)
=>
string
)
=>
f
(
userConfigs
!
)
||
f
(
userDefaultSetting
)
// 替换所有 192.168.0.4 地址为参数地址
backendText
=
backendText
.
replaceAll
(
'192.168.0.4'
,
config
.
public
.
dockerHost
)
// postgres config
backendText
=
backendText
.
replace
(
/spring.datasource.url=
(
.*
?)\r?\n
/
,
`spring.datasource.url=jdbc:postgresql://
${
PgHost
}
:
${
PgPort
}
/
${
username
}
\n`
)
...
...
@@ -107,6 +110,9 @@ export async function copyAndCreateGatewayPropertiesV2InDocker (username: string
throw new Error('没有创建容器,请先初始化容器')
}
let gatewayText = fs.readFileSync(path.resolve('./public/files/v2/application-gateway.properties'), { encoding: 'utf-8' })
// 替换容器地址
gatewayText = gatewayText.replaceAll('192.168.0.4', config.public.dockerHost)
// zookeeper config
gatewayText = gatewayText.replace(/gateway.register-center-server-list=(.*?)\r?\n/, `
gateway
.
register
-
center
-
server
-
list
=
$
{
HOST
}:
2181
\
n
`)
// rocketmq config
...
...
@@ -123,6 +129,8 @@ export async function copyAndCreateServerPropertiesV1InDocker (username: string)
}
let backendText = fs.readFileSync(path.resolve('./public/files/v1/application.properties'), { encoding: 'utf-8' })
const userConfigs = await getPgTableData('v1', username)
// 替换所有 192.168.0.4 地址为参数地址
backendText = backendText.replaceAll('192.168.0.4', config.public.dockerHost)
// postgres config
backendText = backendText.replace(/spring.datasource.url=(.*?)\r?\n/, `
spring
.
datasource
.
url
=
jdbc
:
postgresql
:
//${PgHost}:${PgPort}/${username + '_v1'}\n`)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment