kines9661 commited on
Commit
62c2e34
·
verified ·
1 Parent(s): 38d5d2a

Upload 279 files

Browse files
Files changed (3) hide show
  1. .gitattributes +6 -6
  2. Dockerfile +71 -71
  3. artifacts/api-server/package.json +46 -46
.gitattributes CHANGED
@@ -1,6 +1,6 @@
1
- *.png filter=lfs diff=lfs merge=lfs -text
2
- *.jpg filter=lfs diff=lfs merge=lfs -text
3
- *.jpeg filter=lfs diff=lfs merge=lfs -text
4
- *.gif filter=lfs diff=lfs merge=lfs -text
5
- *.svg filter=lfs diff=lfs merge=lfs -text
6
- *.webp filter=lfs diff=lfs merge=lfs -text
 
1
+ *.png filter=lfs diff=lfs merge=lfs -text
2
+ *.jpg filter=lfs diff=lfs merge=lfs -text
3
+ *.jpeg filter=lfs diff=lfs merge=lfs -text
4
+ *.gif filter=lfs diff=lfs merge=lfs -text
5
+ *.svg filter=lfs diff=lfs merge=lfs -text
6
+ *.webp filter=lfs diff=lfs merge=lfs -text
Dockerfile CHANGED
@@ -1,71 +1,71 @@
1
- FROM node:20-slim
2
-
3
- # 安裝 pnpm 和必要工具
4
- RUN npm install -g pnpm && \
5
- apt-get update && \
6
- apt-get install -y python3 make g++ && \
7
- rm -rf /var/lib/apt/lists/*
8
-
9
- WORKDIR /app
10
-
11
- # 複製 pnpm 配置
12
- COPY .npmrc ./
13
-
14
- # 複製 workspace 配置(使用 HF 優化版本)
15
- COPY package.json pnpm-lock.yaml ./
16
- COPY pnpm-workspace-hf.yaml ./pnpm-workspace.yaml
17
- COPY tsconfig.base.json tsconfig.json ./
18
-
19
- # 複製所有 packages 和啟動腳本
20
- COPY artifacts ./artifacts
21
- COPY lib ./lib
22
- COPY start.sh ./start.sh
23
- RUN chmod +x ./start.sh
24
-
25
- # 安裝依賴
26
- RUN pnpm install --no-frozen-lockfile
27
-
28
- # 強制重新編譯 better-sqlite3 原生模組
29
- RUN echo "=== Rebuilding better-sqlite3 ===" && \
30
- cd node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3 && \
31
- npm run build-release && \
32
- echo "=== better-sqlite3 rebuild completed ==="
33
-
34
- # 驗證關鍵依賴
35
- RUN echo "=== Checking esbuild ===" && pnpm list esbuild || echo "esbuild not found"
36
- RUN echo "=== Checking vite ===" && pnpm list vite || echo "vite not found"
37
- RUN echo "=== Checking typescript ===" && pnpm list typescript || echo "typescript not found"
38
-
39
- # 設定建置時需要的環境變數
40
- ENV NODE_ENV=production
41
- ENV PORT=7860
42
- ENV DATABASE_URL=file:/data/sqlite.db
43
- ENV TEMP_STORAGE_PATH=/app/temp-storage
44
- ENV NODE_PATH=/app/node_modules
45
-
46
- # 建置前端
47
- RUN echo "=== Starting frontend build ===" && \
48
- cd artifacts/image-gen && \
49
- pnpm run build && \
50
- echo "=== Frontend build completed ==="
51
-
52
- # 建置後端
53
- RUN echo "=== Starting backend build ===" && \
54
- cd artifacts/api-server && \
55
- pnpm run build && \
56
- echo "=== Backend build completed ==="
57
-
58
- # 驗證 better-sqlite3 是否已安裝
59
- RUN echo "=== Checking better-sqlite3 ===" && \
60
- pnpm list better-sqlite3 || echo "better-sqlite3 not found in workspace" && \
61
- ls -la node_modules/.pnpm/ | grep better-sqlite3 || echo "better-sqlite3 not in .pnpm"
62
-
63
- # 建立資料和暫存目錄
64
- RUN mkdir -p /data /app/temp-storage && \
65
- chmod 777 /data /app/temp-storage
66
-
67
- # 暴露 Hugging Face Spaces 預設端口
68
- EXPOSE 7860
69
-
70
- # 啟動命令(使用腳本確保從正確的目錄執行)
71
- CMD ["./start.sh"]
 
1
+ FROM node:20-slim
2
+
3
+ # 安裝 pnpm 和必要工具
4
+ RUN npm install -g pnpm && \
5
+ apt-get update && \
6
+ apt-get install -y python3 make g++ && \
7
+ rm -rf /var/lib/apt/lists/*
8
+
9
+ WORKDIR /app
10
+
11
+ # 複製 pnpm 配置
12
+ COPY .npmrc ./
13
+
14
+ # 複製 workspace 配置(使用 HF 優化版本)
15
+ COPY package.json pnpm-lock.yaml ./
16
+ COPY pnpm-workspace-hf.yaml ./pnpm-workspace.yaml
17
+ COPY tsconfig.base.json tsconfig.json ./
18
+
19
+ # 複製所有 packages 和啟動腳本
20
+ COPY artifacts ./artifacts
21
+ COPY lib ./lib
22
+ COPY start.sh ./start.sh
23
+ RUN chmod +x ./start.sh
24
+
25
+ # 安裝依賴
26
+ RUN pnpm install --no-frozen-lockfile
27
+
28
+ # 強制重新編譯 better-sqlite3 原生模組
29
+ RUN echo "=== Rebuilding better-sqlite3 ===" && \
30
+ cd node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3 && \
31
+ npm run build-release && \
32
+ echo "=== better-sqlite3 rebuild completed ==="
33
+
34
+ # 驗證關鍵依賴
35
+ RUN echo "=== Checking esbuild ===" && pnpm list esbuild || echo "esbuild not found"
36
+ RUN echo "=== Checking vite ===" && pnpm list vite || echo "vite not found"
37
+ RUN echo "=== Checking typescript ===" && pnpm list typescript || echo "typescript not found"
38
+
39
+ # 設定建置時需要的環境變數
40
+ ENV NODE_ENV=production
41
+ ENV PORT=7860
42
+ ENV DATABASE_URL=file:/data/sqlite.db
43
+ ENV TEMP_STORAGE_PATH=/app/temp-storage
44
+ ENV NODE_PATH=/app/node_modules
45
+
46
+ # 建置前端
47
+ RUN echo "=== Starting frontend build ===" && \
48
+ cd artifacts/image-gen && \
49
+ pnpm run build && \
50
+ echo "=== Frontend build completed ==="
51
+
52
+ # 建置後端
53
+ RUN echo "=== Starting backend build ===" && \
54
+ cd artifacts/api-server && \
55
+ pnpm run build && \
56
+ echo "=== Backend build completed ==="
57
+
58
+ # 驗證 better-sqlite3 是否已安裝
59
+ RUN echo "=== Checking better-sqlite3 ===" && \
60
+ pnpm list better-sqlite3 || echo "better-sqlite3 not found in workspace" && \
61
+ ls -la node_modules/.pnpm/ | grep better-sqlite3 || echo "better-sqlite3 not in .pnpm"
62
+
63
+ # 建立資料和暫存目錄
64
+ RUN mkdir -p /data /app/temp-storage && \
65
+ chmod 777 /data /app/temp-storage
66
+
67
+ # 暴露 Hugging Face Spaces 預設端口
68
+ EXPOSE 7860
69
+
70
+ # 啟動命令(使用腳本確保從正確的目錄執行)
71
+ CMD ["./start.sh"]
artifacts/api-server/package.json CHANGED
@@ -1,46 +1,46 @@
1
- {
2
- "name": "@workspace/api-server",
3
- "version": "0.0.0",
4
- "private": true,
5
- "type": "module",
6
- "scripts": {
7
- "dev": "export NODE_ENV=development && pnpm run build && pnpm run start",
8
- "build": "node ./build.mjs",
9
- "start": "node --enable-source-maps ./dist/index.mjs",
10
- "typecheck": "tsc -p tsconfig.json --noEmit"
11
- },
12
- "dependencies": {
13
- "@aws-sdk/client-s3": "^3.1024.0",
14
- "@aws-sdk/lib-storage": "^3.1024.0",
15
- "@clerk/express": "^2.0.8",
16
- "@google-cloud/storage": "^7.19.0",
17
- "@workspace/api-zod": "workspace:*",
18
- "@workspace/db": "workspace:*",
19
- "bcryptjs": "^3.0.3",
20
- "better-sqlite3": "^11.0",
21
- "cookie-parser": "^1.4.7",
22
- "cors": "^2",
23
- "crypto": "^1.0.1",
24
- "drizzle-orm": "catalog:",
25
- "express": "^5",
26
- "google-auth-library": "^10.6.2",
27
- "http-proxy-middleware": "^3.0.5",
28
- "jsonwebtoken": "^9.0.3",
29
- "multer": "^2.1.1",
30
- "pino": "^9",
31
- "pino-http": "^10"
32
- },
33
- "devDependencies": {
34
- "@types/bcryptjs": "^3.0.0",
35
- "@types/cookie-parser": "^1.4.10",
36
- "@types/cors": "^2.8.19",
37
- "@types/express": "^5.0.6",
38
- "@types/jsonwebtoken": "^9.0.10",
39
- "@types/multer": "^2.1.0",
40
- "@types/node": "catalog:",
41
- "esbuild": "^0.27.3",
42
- "esbuild-plugin-pino": "^2.3.3",
43
- "pino-pretty": "^13",
44
- "thread-stream": "3.1.0"
45
- }
46
- }
 
1
+ {
2
+ "name": "@workspace/api-server",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "export NODE_ENV=development && pnpm run build && pnpm run start",
8
+ "build": "node ./build.mjs",
9
+ "start": "node --enable-source-maps ./dist/index.mjs",
10
+ "typecheck": "tsc -p tsconfig.json --noEmit"
11
+ },
12
+ "dependencies": {
13
+ "@aws-sdk/client-s3": "^3.1024.0",
14
+ "@aws-sdk/lib-storage": "^3.1024.0",
15
+ "@clerk/express": "^2.0.8",
16
+ "@google-cloud/storage": "^7.19.0",
17
+ "@workspace/api-zod": "workspace:*",
18
+ "@workspace/db": "workspace:*",
19
+ "bcryptjs": "^3.0.3",
20
+ "better-sqlite3": "^11.0",
21
+ "cookie-parser": "^1.4.7",
22
+ "cors": "^2",
23
+ "crypto": "^1.0.1",
24
+ "drizzle-orm": "catalog:",
25
+ "express": "^5",
26
+ "google-auth-library": "^10.6.2",
27
+ "http-proxy-middleware": "^3.0.5",
28
+ "jsonwebtoken": "^9.0.3",
29
+ "multer": "^2.1.1",
30
+ "pino": "^9",
31
+ "pino-http": "^10"
32
+ },
33
+ "devDependencies": {
34
+ "@types/bcryptjs": "^3.0.0",
35
+ "@types/cookie-parser": "^1.4.10",
36
+ "@types/cors": "^2.8.19",
37
+ "@types/express": "^5.0.6",
38
+ "@types/jsonwebtoken": "^9.0.10",
39
+ "@types/multer": "^2.1.0",
40
+ "@types/node": "catalog:",
41
+ "esbuild": "^0.27.3",
42
+ "esbuild-plugin-pino": "^2.3.3",
43
+ "pino-pretty": "^13",
44
+ "thread-stream": "3.1.0"
45
+ }
46
+ }