javaeeduke commited on
Commit
ebf0edc
·
verified ·
1 Parent(s): fec3b96

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +5 -50
Dockerfile CHANGED
@@ -1,55 +1,10 @@
1
- FROM node:20-slim AS builder
2
- WORKDIR /app
3
- RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
4
- RUN git clone https://github.com/tashfeenahmed/freellmapi.git .
5
- RUN npm install
6
- RUN npm run build
7
 
8
- # --- 生产运行环境 ---
9
- FROM node:20-slim AS runner
10
  WORKDIR /app
 
 
11
 
12
- # 补全 Prisma 运行所需的 openssl 依赖,防止报错
13
- RUN apt-get update && apt-get install -y openssl && rm -rf /var/lib/apt/lists/*
14
-
15
- COPY --from=builder /app ./
16
- RUN mkdir -p /data && ln -sf /data /app/server/data
17
-
18
- # 1. 前端静态路由修复
19
- RUN cp -r client/dist/* server/dist/public/ 2>/dev/null || cp -r client/dist/* server/public/ 2>/dev/null || true
20
 
21
- # 2. 注入基础配置
22
  EXPOSE 7860
23
- ENV PORT=7860
24
- ENV DEV_MODE=true
25
- ENV DATABASE_URL="file:/data/database.sqlite"
26
-
27
- # 3. 【无损看门狗】:保持你原本的逻辑不变
28
- RUN echo "import fs from 'fs';" > security.js && \
29
- echo "const file = 'server/dist/index.js';" >> security.js && \
30
- echo "if (fs.existsSync(file)) {" >> security.js && \
31
- echo " let content = fs.readFileSync(file, 'utf8');" >> security.js && \
32
- echo " const injectCode = \` \
33
- import http from 'http'; \
34
- const originalCreateServer = http.createServer; \
35
- http.createServer = function(onion) { \
36
- return originalCreateServer.call(this, (req, res) => { \
37
- const user = process.env.SPACE_BASIC_AUTH_USERNAME || 'admin'; \
38
- const pass = process.env.SPACE_BASIC_AUTH_PASSWORD || 'admin123'; \
39
- if (req.url.startsWith('/v1')) return onion(req, res); \
40
- const b64auth = (req.headers.authorization || '').split(' ')[1] || ''; \
41
- const [login, password] = Buffer.from(b64auth, 'base64').toString().split(':'); \
42
- if (login === user && password === pass) return onion(req, res); \
43
- res.statusCode = 401; \
44
- res.setHeader('WWW-Authenticate', 'Basic realm=\"Secure\"'); \
45
- res.end('Unauthorized'); \
46
- }); \
47
- }; \n\`;" >> security.js && \
48
- echo " fs.writeFileSync(file, injectCode + content, 'utf8');" >> security.js && \
49
- echo "}" >> security.js
50
-
51
- # 💡 核心修复点:
52
- # 1. 使用 --schema=./server/prisma/schema.prisma 精确定位文件
53
- # 2. 强制指定环境变量,确保数据库表结构安全同步到 /data/database.sqlite
54
- # 移除所有在外部手动调用的 prisma 指令,直接交给项目原本的 dev 命令去跑,它内部自己会处理数据库初始化!
55
- CMD ["npm", "run", "dev"]
 
1
+ FROM python:3.11-slim
 
 
 
 
 
2
 
 
 
3
  WORKDIR /app
4
+ COPY requirements.txt .
5
+ RUN pip install --no-cache-dir -r requirements.txt
6
 
7
+ COPY . .
 
 
 
 
 
 
 
8
 
 
9
  EXPOSE 7860
10
+ CMD ["python", "main.py"]