StarrySkyWorld commited on
Commit
9f2bb01
·
verified ·
1 Parent(s): d54e4a2

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +68 -86
Dockerfile CHANGED
@@ -1,110 +1,92 @@
1
  FROM python:3.10-slim
2
 
3
- # 设置工作目录
4
  WORKDIR /app
5
 
6
  # 安装系统依赖
7
  RUN apt-get update && apt-get install -y \
8
  wget \
9
  curl \
10
- libgl1-mesa-glx \
11
  libglib2.0-0 \
12
  libsm6 \
13
  libxext6 \
14
- libxrender-dev \
15
  libgomp1 \
16
- libgthread-2.0-0 \
17
  && rm -rf /var/lib/apt/lists/*
18
 
19
- # 设置环境变量
20
  ENV PYTHONUNBUFFERED=1
21
  ENV FILE_LINK=""
22
 
23
- # 创建依赖文件(直接写入)
24
- RUN cat > /app/deps.txt << 'EOF'
25
- fastapi==0.104.1
26
- uvicorn[standard]==0.24.0
27
- pydantic==2.5.0
28
- ultralytics==8.0.200
29
- transformers==4.35.0
30
- torch==2.1.0
31
- torchvision==0.16.0
32
- opencv-python==4.8.1.78
33
- pillow==10.1.0
34
- numpy==1.24.3
35
- camoufox==0.4.0
36
- playwright==1.40.0
37
- requests==2.31.0
38
- EOF
39
-
40
- # 安装 Python 依赖
41
- RUN pip install --no-cache-dir -r deps.txt
42
-
43
- # 安装 Playwright 浏览器
44
  RUN playwright install chromium && \
45
  playwright install-deps chromium
46
 
47
- # 创建 entrypoint 脚本
48
- RUN cat > /entrypoint.sh << 'EOF'
49
- #!/bin/bash
50
- set -e
51
-
52
- echo "==========================================="
53
- echo "🚀 ReCAPTCHA Solver API Server"
54
- echo "==========================================="
55
-
56
- # 检查是否设置了 FILE_LINK
57
- if [ -z "$FILE_LINK" ]; then
58
- echo "❌ 错误: 未设置 FILE_LINK 环境变量"
59
- echo "请使用: docker run -e FILE_LINK=https://example.com/code.py ..."
60
- exit 1
61
- fi
62
-
63
- echo "📥 正在从 $FILE_LINK 下载代码..."
64
-
65
- # 下载代码文件
66
- if wget -q --show-progress "$FILE_LINK" -O /app/recaptcha_api_server.py; then
67
- echo "✅ 代码下载成功"
68
- else
69
- echo "❌ 代码下载失败,尝试使用 curl..."
70
- if curl -fSL "$FILE_LINK" -o /app/recaptcha_api_server.py; then
71
- echo "✅ 代码下载成功 (使用 curl)"
72
- else
73
- echo " 下载失败,请检查 FILE_LINK 是否正确"
74
- exit 1
75
- fi
76
- fi
77
-
78
- # 验证文件大小
79
- FILE_SIZE=$(stat -c%s /app/recaptcha_api_server.py)
80
- if [ "$FILE_SIZE" -lt 1000 ]; then
81
- echo "⚠️ 警告: 下载的文件太小 ($FILE_SIZE bytes),可能不是有效的代码文件"
82
- fi
83
-
84
- echo "📊 文件信息:"
85
- ls -lh /app/recaptcha_api_server.py
86
- echo ""
87
-
88
- echo "🔧 检查并安装额外依赖..."
89
- pip install --no-cache-dir -r /app/deps.txt > /dev/null 2>&1
90
-
91
- echo ""
92
- echo "==========================================="
93
- echo "🎯 启动服务器..."
94
- echo "==========================================="
95
- echo "📡 监听地址: 0.0.0.0:8000"
96
- echo "📝 API 文档: http://localhost:8000/docs"
97
- echo "==========================================="
98
- echo ""
99
-
100
- # 运行服务器
101
- exec python /app/recaptcha_api_server.py
102
- EOF
103
-
104
- RUN chmod +x /entrypoint.sh
105
 
106
- # 暴露端口
107
  EXPOSE 8000
108
 
109
- # 设置 entrypoint
110
  ENTRYPOINT ["/entrypoint.sh"]
 
1
  FROM python:3.10-slim
2
 
 
3
  WORKDIR /app
4
 
5
  # 安装系统依赖
6
  RUN apt-get update && apt-get install -y \
7
  wget \
8
  curl \
9
+ libgl1 \
10
  libglib2.0-0 \
11
  libsm6 \
12
  libxext6 \
13
+ libxrender1 \
14
  libgomp1 \
15
+ ffmpeg \
16
  && rm -rf /var/lib/apt/lists/*
17
 
 
18
  ENV PYTHONUNBUFFERED=1
19
  ENV FILE_LINK=""
20
 
21
+ # 创建依赖文件
22
+ RUN echo "fastapi==0.104.1" > /app/deps.txt && \
23
+ echo "uvicorn[standard]==0.24.0" >> /app/deps.txt && \
24
+ echo "pydantic==2.5.0" >> /app/deps.txt && \
25
+ echo "ultralytics==8.0.200" >> /app/deps.txt && \
26
+ echo "transformers==4.35.0" >> /app/deps.txt && \
27
+ echo "torch==2.1.0" >> /app/deps.txt && \
28
+ echo "torchvision==0.16.0" >> /app/deps.txt && \
29
+ echo "opencv-python==4.8.1.78" >> /app/deps.txt && \
30
+ echo "pillow==10.1.0" >> /app/deps.txt && \
31
+ echo "numpy==1.24.3" >> /app/deps.txt && \
32
+ echo "camoufox==0.4.0" >> /app/deps.txt && \
33
+ echo "playwright==1.40.0" >> /app/deps.txt && \
34
+ echo "requests==2.31.0" >> /app/deps.txt
35
+
36
+ # 安装依赖
37
+ RUN pip install --no-cache-dir -r /app/deps.txt
38
+
39
+ # 安装 Playwright
 
 
40
  RUN playwright install chromium && \
41
  playwright install-deps chromium
42
 
43
+ # 创建 entrypoint
44
+ RUN echo '#!/bin/bash' > /entrypoint.sh && \
45
+ echo 'set -e' >> /entrypoint.sh && \
46
+ echo '' >> /entrypoint.sh && \
47
+ echo 'echo "==========================================="' >> /entrypoint.sh && \
48
+ echo 'echo "🚀 ReCAPTCHA Solver API Server"' >> /entrypoint.sh && \
49
+ echo 'echo "==========================================="' >> /entrypoint.sh && \
50
+ echo '' >> /entrypoint.sh && \
51
+ echo 'if [ -z "$FILE_LINK" ]; then' >> /entrypoint.sh && \
52
+ echo ' echo "❌ 错误: 未设置 FILE_LINK 环境变量"' >> /entrypoint.sh && \
53
+ echo ' echo "用法: docker run -e FILE_LINK=https://example.com/code.py ..."' >> /entrypoint.sh && \
54
+ echo ' exit 1' >> /entrypoint.sh && \
55
+ echo 'fi' >> /entrypoint.sh && \
56
+ echo '' >> /entrypoint.sh && \
57
+ echo 'echo "📥 下载代码: $FILE_LINK"' >> /entrypoint.sh && \
58
+ echo '' >> /entrypoint.sh && \
59
+ echo 'if wget -q --show-progress "$FILE_LINK" -O /app/recaptcha_api_server.py 2>&1; then' >> /entrypoint.sh && \
60
+ echo ' echo "✅ wget 下载成功"' >> /entrypoint.sh && \
61
+ echo 'elif curl -fSL "$FILE_LINK" -o /app/recaptcha_api_server.py 2>&1; then' >> /entrypoint.sh && \
62
+ echo ' echo "✅ curl 下载成功"' >> /entrypoint.sh && \
63
+ echo 'else' >> /entrypoint.sh && \
64
+ echo ' echo "❌ 下载失败,请检查 FILE_LINK"' >> /entrypoint.sh && \
65
+ echo ' exit 1' >> /entrypoint.sh && \
66
+ echo 'fi' >> /entrypoint.sh && \
67
+ echo '' >> /entrypoint.sh && \
68
+ echo 'FILE_SIZE=$(stat -c%s /app/recaptcha_api_server.py 2>/dev/null || echo 0)' >> /entrypoint.sh && \
69
+ echo 'echo "📊 文件大小: $FILE_SIZE bytes"' >> /entrypoint.sh && \
70
+ echo '' >> /entrypoint.sh && \
71
+ echo 'if [ "$FILE_SIZE" -lt 1000 ]; then' >> /entrypoint.sh && \
72
+ echo ' echo "⚠️ 文件太小,可能无效"' >> /entrypoint.sh && \
73
+ echo 'fi' >> /entrypoint.sh && \
74
+ echo '' >> /entrypoint.sh && \
75
+ echo 'echo "🔧 安装依赖..."' >> /entrypoint.sh && \
76
+ echo 'pip install --no-cache-dir -r /app/deps.txt -q 2>&1 || true' >> /entrypoint.sh && \
77
+ echo '' >> /entrypoint.sh && \
78
+ echo 'echo ""' >> /entrypoint.sh && \
79
+ echo 'echo "==========================================="' >> /entrypoint.sh && \
80
+ echo 'echo "🎯 启动服务器"' >> /entrypoint.sh && \
81
+ echo 'echo "==========================================="' >> /entrypoint.sh && \
82
+ echo 'echo "📡 地址: http://0.0.0.0:8000"' >> /entrypoint.sh && \
83
+ echo 'echo "📝 文档: http://localhost:8000/docs"' >> /entrypoint.sh && \
84
+ echo 'echo "==========================================="' >> /entrypoint.sh && \
85
+ echo 'echo ""' >> /entrypoint.sh && \
86
+ echo '' >> /entrypoint.sh && \
87
+ echo 'exec python /app/recaptcha_api_server.py' >> /entrypoint.sh && \
88
+ chmod +x /entrypoint.sh
 
 
 
 
 
 
 
 
 
 
 
 
89
 
 
90
  EXPOSE 8000
91
 
 
92
  ENTRYPOINT ["/entrypoint.sh"]