Commit 8a690973 authored by WongYAQi's avatar WongYAQi

dev: 提供重启容器时的重置操作;Nginx 配置增加 Websocket 处理

parent 6fb2c9b3
<template> <template>
<div class="project-card project-v2"> <div class="project-card project-v1">
<div class="project-card__info"> <div class="project-card__info">
<div class="project-card__desc"> <div class="project-card__desc">
<div class="row"> <div class="row">
......
...@@ -29,5 +29,8 @@ ...@@ -29,5 +29,8 @@
"@types/lodash": "^4.17.0", "@types/lodash": "^4.17.0",
"@types/pg": "^8.11.4", "@types/pg": "^8.11.4",
"@types/tar-fs": "^2.0.4" "@types/tar-fs": "^2.0.4"
},
"volta": {
"node": "24.14.1"
} }
} }
...@@ -105,6 +105,20 @@ http { ...@@ -105,6 +105,20 @@ http {
client_max_body_size 0; client_max_body_size 0;
} }
location /websocket {
proxy_pass http://127.0.0.1:9000;
# WebSocket 必需的头信息
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# 超时设置
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
location /vscode { location /vscode {
proxy_pass http://127.0.0.1:8000; proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host; proxy_set_header Host $host;
...@@ -120,5 +134,6 @@ http { ...@@ -120,5 +134,6 @@ http {
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
client_max_body_size 0; client_max_body_size 0;
} }
} }
} }
UPDATE v2 UPDATE v2
SET status = CASE SET status = CASE
WHEN status IN ('running', 'launched', 'compiling', 'compiled', 'created') THEN 'created' WHEN status IN ('running', 'launched', 'compiled', 'stopping') THEN 'compiled'
WHEN status IN ('compiling', 'created') THEN 'created'
ELSE NULL ELSE NULL
END; END;
UPDATE v1 UPDATE v1
SET status = CASE SET status = CASE
WHEN status IN ('running', 'launched', 'compiling', 'compiled', 'created') THEN 'created' WHEN status IN ('running', 'launched', 'compiled', 'stopping') THEN 'compiled'
WHEN status IN ('compiling', 'created') THEN 'created'
ELSE NULL ELSE NULL
END; END;
\ No newline at end of file
...@@ -78,13 +78,10 @@ export default defineEventHandler(async (event) => { ...@@ -78,13 +78,10 @@ export default defineEventHandler(async (event) => {
}) })
await LogUtil.run(username, 'v1-迁移logwire-demo', async () => { await LogUtil.run(username, 'v1-迁移logwire-demo', async () => {
await docker.execContainerCommand({ container, cmd: 'rm -rf /var/logwire-demo' }) // await docker.execContainerCommand({ container, cmd: 'rm -rf /var/logwire-demo' })
await docker.execContainerCommand({ container, cmd: 'mkdir logwire-demo', dir: '/var'}) // await docker.execContainerCommand({ container, cmd: 'mkdir logwire-demo', dir: '/var'})
await docker.execContainerCommand({ container, cmd: 'mkdir -p dist/projects/demo', dir: '/var/logwire-platform'}) await docker.execContainerCommand({ container, cmd: 'mkdir -p dist/projects/demo', dir: '/var/logwire-platform'})
// 避免上传太大的压缩文件,需要先在 node 服务器的 /var 目录下,上传该文件 await docker.execContainerCommand({ container, cmd: 'git clone ssh://git@gitlab.logwire.cn:13389/wongyaqi/dev-v1-book.git', dir: '/var/logwire-platform/dist/projects/demo' })
await docker.putArchive({ container, tarPath: path.resolve('/var/book.tar'), targetPath: '/var/logwire-demo' })
await docker.execContainerCommand({ container, cmd: 'tar -zvcf ../book.tar .', dir: '/var/logwire-demo/book'})
await docker.execContainerCommand({ container, cmd: 'tar -zvxf book.tar -C /var/logwire-platform/dist/projects/demo', dir: '/var/logwire-demo'})
}) })
await changeProjectStatus( 'v1', username, 'status', 'created') await changeProjectStatus( 'v1', username, 'status', 'created')
......
...@@ -10,7 +10,7 @@ export default defineEventHandler(async (event) => { ...@@ -10,7 +10,7 @@ export default defineEventHandler(async (event) => {
} }
LogUtil.printInfo(username, `程序停止中......`) LogUtil.printInfo(username, `程序停止中......`)
await changeProjectStatus( 'v1', username, 'status', 'stopping') await changeProjectStatus( 'v1', username, 'status', 'stopping')
await docker.execContainerCommand({ container, cmd: 'pm2 delete platform', quiet: true }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete platform 2>/dev/null || true'] })
LogUtil.printInfo(username, `程序已停止`) LogUtil.printInfo(username, `程序已停止`)
await changeProjectStatus( 'v1', username, 'status', 'compiled') await changeProjectStatus( 'v1', username, 'status', 'compiled')
}) })
\ No newline at end of file
...@@ -59,8 +59,8 @@ export default defineEventHandler(async (event) => { ...@@ -59,8 +59,8 @@ export default defineEventHandler(async (event) => {
LogUtil.print(username, `[progress] [[1;34mInfo[m] 程序启动中...... \n`) LogUtil.print(username, `[progress] [[1;34mInfo[m] 程序启动中...... \n`)
try { try {
await docker.execContainerCommand({ container, cmd: 'pm2 delete backend' }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete backend 2>/dev/null || true'] })
await docker.execContainerCommand({ container, cmd: 'pm2 delete gateway' }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete gateway 2>/dev/null || true'] })
} catch (err) { } catch (err) {
} }
......
...@@ -10,9 +10,9 @@ export default defineEventHandler(async (event) => { ...@@ -10,9 +10,9 @@ export default defineEventHandler(async (event) => {
} }
LogUtil.printInfo(username, `程序停止中......`) LogUtil.printInfo(username, `程序停止中......`)
await changeProjectStatus( 'v2', username, 'status', 'stopping') await changeProjectStatus( 'v2', username, 'status', 'stopping')
await docker.execContainerCommand({ container, cmd: 'pm2 delete backend', quiet: true }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete backend 2>/dev/null || true'] })
await docker.execContainerCommand({ container, cmd: 'pm2 delete gateway', quiet: true }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete gateway 2>/dev/null || true'] })
await docker.execContainerCommand({ container, cmd: 'pm2 delete compile', quiet: true }) await docker.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete compile 2>/dev/null || true'] })
LogUtil.print(username, `程序已停止`) LogUtil.print(username, `程序已停止`)
await changeProjectStatus( 'v2', username, 'status', 'compiled') await changeProjectStatus( 'v2', username, 'status', 'compiled')
......
...@@ -161,9 +161,9 @@ class Docker { ...@@ -161,9 +161,9 @@ class Docker {
await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/gateway-error.log'}) await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/gateway-error.log'})
await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/platform-out.log'}) await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/platform-out.log'})
await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/platform-error.log'}) await this.execContainerCommand({ container, cmd: 'rm -f /root/.pm2/logs/platform-error.log'})
try { await this.execContainerCommand({ container, cmd: 'pm2 delete backend' }) } catch (err) {} await this.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete backend 2>/dev/null || true'] })
try { await this.execContainerCommand({ container, cmd: 'pm2 delete gateway' }) } catch (err) {} await this.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete gateway 2>/dev/null || true'] })
try { await this.execContainerCommand({ container, cmd: 'pm2 delete platform' }) } catch (err) {} await this.execContainerCommand({ container, cmd: ['/bin/sh', '-c', 'pm2 delete platform 2>/dev/null || true'] })
if (platform === 'v1') { if (platform === 'v1') {
await this.switchJavaVersion({ container, username, version: 8 }) await this.switchJavaVersion({ container, username, version: 8 })
const statusV2 = (await getPgTableData( 'v2', username))?.status const statusV2 = (await getPgTableData( 'v2', username))?.status
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment