From 103b6c36d5bb30e187883259938bf9b84f7843e9 Mon Sep 17 00:00:00 2001 From: dqzboy Date: Wed, 24 Jul 2024 18:45:45 +0800 Subject: [PATCH] feat: Add Docker Compose Deployment --- Dockerfile | 4 - hubcmdui/config.json | 17 ++++ hubcmdui/docker-compose.yaml | 8 ++ hubcmdui/server.js | 25 +++++- hubcmdui/web/admin.html | 147 ++++++++++++++++++----------------- hubcmdui/web/index.html | 41 ++++++---- 6 files changed, 151 insertions(+), 91 deletions(-) create mode 100644 hubcmdui/docker-compose.yaml diff --git a/Dockerfile b/Dockerfile index c1e2e42..28071b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,11 @@ -# 使用官方的 Node.js 运行时镜像作为基础镜像 FROM node:lts-alpine - # 设置工作目录 WORKDIR /app # 复制项目文件到工作目录 COPY hubcmdui/ . # 安装项目依赖 RUN npm install - # 暴露应用程序的端口 EXPOSE 3000 - # 运行应用程序 CMD ["node", "server.js"] \ No newline at end of file diff --git a/hubcmdui/config.json b/hubcmdui/config.json index e69de29..a1e8c36 100644 --- a/hubcmdui/config.json +++ b/hubcmdui/config.json @@ -0,0 +1,17 @@ +{ + "logo": "", + "proxyDomain": "dqzboy.github.io", + "menuItems": [ + { + "text": "首页", + "link": "", + "newTab": false + }, + { + "text": "项目", + "link": "https://github.com/dqzboy/Docker-Proxy", + "newTab": true + } + ], + "adImages": [] +} \ No newline at end of file diff --git a/hubcmdui/docker-compose.yaml b/hubcmdui/docker-compose.yaml new file mode 100644 index 0000000..ec084dc --- /dev/null +++ b/hubcmdui/docker-compose.yaml @@ -0,0 +1,8 @@ +services: + ## HubCMD UI + hubcmd-ui: + container_name: hubcmd-ui + image: dqzboy/hubcmd-ui:latest + restart: always + ports: + - 3000:3000 \ No newline at end of file diff --git a/hubcmdui/server.js b/hubcmdui/server.js index 4460508..79a40e3 100644 --- a/hubcmdui/server.js +++ b/hubcmdui/server.js @@ -26,8 +26,19 @@ const USERS_FILE = path.join(__dirname, 'users.json'); async function readConfig() { try { const data = await fs.readFile(CONFIG_FILE, 'utf8'); + // 确保 data 不为空或不完整 + if (!data.trim()) { + console.warn('Config file is empty, returning default config'); + return { + logo: '', + menuItems: [], + adImage: { url: '', link: '' } + }; + } + console.log('Config read successfully'); return JSON.parse(data); } catch (error) { + console.error('Failed to read config:', error); if (error.code === 'ENOENT') { return { logo: '', @@ -41,7 +52,13 @@ async function readConfig() { // 写入配置 async function writeConfig(config) { - await fs.writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8'); + try { + await fs.writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8'); + console.log('Config saved successfully'); + } catch (error) { + console.error('Failed to save config:', error); + throw error; + } } // 读取用户 @@ -116,10 +133,10 @@ app.get('/api/config', async (req, res) => { // API 端点:保存配置 app.post('/api/config', requireLogin, async (req, res) => { try { - await writeConfig(req.body); - res.json({ success: true }); + await writeConfig(req.body); + res.json({ success: true }); } catch (error) { - res.status(500).json({ error: 'Failed to save config' }); + res.status(500).json({ error: 'Failed to save config' }); } }); diff --git a/hubcmdui/web/admin.html b/hubcmdui/web/admin.html index 75db0fe..c5fdb58 100644 --- a/hubcmdui/web/admin.html +++ b/hubcmdui/web/admin.html @@ -162,6 +162,7 @@