timindev commited on
Commit
34e87a0
·
verified ·
1 Parent(s): 482c804

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +51 -6
Dockerfile CHANGED
@@ -12,14 +12,59 @@ RUN git clone https://github.com/titaniumnetwork-dev/Ultraviolet-App.git .
12
  # 4. 安装依赖
13
  RUN npm install
14
 
15
- # 5. --- 核心修复:精准解决绝对路径,防止双重 public ---
16
- # 将 root 设置为 /app,完美匹配代码中的 "public/..." 路径
17
- RUN sed -i 's|res.sendFile(\([^,)]*\))|res.sendFile(\1, { root: "/app" })|g' src/index.js
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
- # 6. 设置环境变量
 
 
 
20
  ENV PORT=7860
21
  ENV NODE_ENV=production
22
  EXPOSE 7860
23
 
24
- # 7. 启动
25
- CMD ["npm", "start"]
 
12
  # 4. 安装依赖
13
  RUN npm install
14
 
15
+ # 5. --- 彻底重写启动脚本,解决所有路径和 Bare 404 问题 ---
16
+ RUN echo 'import { createServer } from "node:http"; \n\
17
+ import { join } from "node:path"; \n\
18
+ import express from "express"; \n\
19
+ import { createBareServer } from "@tomphttp/bare-server-node"; \n\
20
+ \n\
21
+ const bare = createBareServer("/bare/"); \n\
22
+ const app = express(); \n\
23
+ const __dirname = process.cwd(); \n\
24
+ \n\
25
+ // 静态文件服务:使用绝对路径,再也不会报 ENOENT 或 TypeError \n\
26
+ app.use(express.static(join(__dirname, "public"))); \n\
27
+ \n\
28
+ // 首页路由 \n\
29
+ app.get("/", (req, res) => { \n\
30
+ res.sendFile(join(__dirname, "public", "index.html")); \n\
31
+ }); \n\
32
+ \n\
33
+ // 404 页面 \n\
34
+ app.use((req, res) => { \n\
35
+ res.status(404).sendFile(join(__dirname, "public", "404.html")); \n\
36
+ }); \n\
37
+ \n\
38
+ const server = createServer(); \n\
39
+ \n\
40
+ server.on("request", (req, res) => { \n\
41
+ if (bare.shouldRoute(req)) { \n\
42
+ bare.routeRequest(req, res); \n\
43
+ } else { \n\
44
+ app(req, res); \n\
45
+ } \n\
46
+ }); \n\
47
+ \n\
48
+ server.on("upgrade", (req, socket, head) => { \n\
49
+ if (bare.shouldRoute(req)) { \n\
50
+ bare.routeUpgrade(req, socket, head); \n\
51
+ } else { \n\
52
+ socket.end(); \n\
53
+ } \n\
54
+ }); \n\
55
+ \n\
56
+ const PORT = process.env.PORT || 7860; \n\
57
+ server.listen({ port: PORT }, () => { \n\
58
+ console.log("Ultraviolet 成功运行在端口:", PORT); \n\
59
+ });' > src/index.js
60
 
61
+ # 6. --- 修正前端配置,确保指向正确的 /bare/ ---
62
+ RUN sed -i "s|bare: [^,]*|bare: '/bare/'|g" public/uv/uv.config.js || true
63
+
64
+ # 7. 环境变量与端口
65
  ENV PORT=7860
66
  ENV NODE_ENV=production
67
  EXPOSE 7860
68
 
69
+ # 8. 直接运行
70
+ CMD ["node", "src/index.js"]