timindev commited on
Commit
e520bf5
·
verified ·
1 Parent(s): 151c8a9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +10 -52
Dockerfile CHANGED
@@ -1,68 +1,26 @@
1
- # 1. 使用更高版本的 Node(项目要求 24+,这里用 22-slim 是目前最稳妥的)
2
- FROM node:22-slim
3
 
4
  # 2. 安装 git
5
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
6
 
7
  WORKDIR /app
8
 
9
- # 3. 克隆代码
10
  RUN git clone https://github.com/titaniumnetwork-dev/Ultraviolet-App.git .
11
 
12
- # 4. 安装依赖
13
  RUN npm install
14
 
15
- # 5. --- 彻底修复:直接重写 src/index.js ---
16
- # 这里使用符合 ES Module (import) 规范的代码,并严格修正路径
17
- RUN echo "import { createServer } from 'node:http'; \n\
18
- import { join } from 'node:path'; \n\
19
- import express from 'express'; \n\
20
- import { createBareServer } from '@tomphttp/bare-server-node'; \n\
21
- \n\
22
- const bare = createBareServer('/bare/'); \n\
23
- const app = express(); \n\
24
- const __dirname = process.cwd(); \n\
25
- const publicPath = join(__dirname, 'public'); \n\
26
- \n\
27
- // 静态文件处理 \n\
28
- app.use(express.static(publicPath)); \n\
29
- \n\
30
- app.get('/', (req, res) => { \n\
31
- res.sendFile(join(publicPath, 'index.html')); \n\
32
- }); \n\
33
- \n\
34
- // 统一处理 404,防止路径拼错 \n\
35
- app.use((req, res) => { \n\
36
- res.status(404).sendFile(join(publicPath, '404.html')); \n\
37
- }); \n\
38
- \n\
39
- const server = createServer(); \n\
40
- \n\
41
- server.on('request', (req, res) => { \n\
42
- if (bare.shouldRoute(req)) { \n\
43
- bare.routeRequest(req, res); \n\
44
- } else { \n\
45
- app(req, res); \n\
46
- } \n\
47
- }); \n\
48
- \n\
49
- server.on('upgrade', (req, socket, head) => { \n\
50
- if (bare.shouldRoute(req)) { \n\
51
- bare.routeUpgrade(req, socket, head); \n\
52
- } else { \n\
53
- socket.end(); \n\
54
- } \n\
55
- }); \n\
56
- \n\
57
- const PORT = process.env.PORT || 7860; \n\
58
- server.listen({ port: PORT }, () => { \n\
59
- console.log('Server is running on port', PORT); \n\
60
- });" > src/index.js
61
 
62
  # 6. 设置环境变量
63
  ENV PORT=7860
64
  ENV NODE_ENV=production
65
  EXPOSE 7860
66
 
67
- # 7. 启动
68
- CMD ["node", "src/index.js"]
 
1
+ # 1. 使用 Node.js 18 (这个版本对该项目最稳定)
2
+ FROM node:18-slim
3
 
4
  # 2. 安装 git
5
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
6
 
7
  WORKDIR /app
8
 
9
+ # 3. 克隆官方代码
10
  RUN git clone https://github.com/titaniumnetwork-dev/Ultraviolet-App.git .
11
 
12
+ # 4. 安装所有依赖
13
  RUN npm install
14
 
15
+ # 5. --- 关键修复:修复路径不绝对导致的报错 ---
16
+ # 我们直接修改 src/index.js,给所有的 res.sendFile 加上 { root: "/app/public" } 参数
17
+ # 这样既保留了原厂的所有逻辑(包括 Bare Server),又解决了报错
18
+ RUN sed -i 's|res.sendFile(\([^,)]*\))|res.sendFile(\1, { root: "/app/public" })|g' src/index.js
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  # 6. 设置环境变量
21
  ENV PORT=7860
22
  ENV NODE_ENV=production
23
  EXPOSE 7860
24
 
25
+ # 7. 启动(使用原厂定义的启动脚本)
26
+ CMD ["npm", "start"]