StarrySkyWorld commited on
Commit
e828090
·
verified ·
1 Parent(s): fe52ac5

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +92 -0
Dockerfile ADDED
@@ -0,0 +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
+ COPY requirements.txt /app/deps.txt 2>/dev/null || echo "fastapi==0.104.1\nuvicorn[standard]==0.24.0\npydantic==2.5.0\nultralytics==8.0.200\ntransformers==4.35.0\ntorch==2.1.0\ntorchvision==0.16.0\nopencv-python==4.8.1.78\npillow==10.1.0\nnumpy==1.24.3\ncamoufox==0.4.0\nplaywright==1.40.0\nrequests==2.31.0" > /app/deps.txt
25
+
26
+ # 安装 Python 依赖
27
+ RUN pip install --no-cache-dir -r deps.txt
28
+
29
+ # 安装 Playwright 浏览器
30
+ RUN playwright install chromium && \
31
+ playwright install-deps chromium
32
+
33
+ # 创建 entrypoint 脚本
34
+ RUN echo '#!/bin/bash\n\
35
+ set -e\n\
36
+ \n\
37
+ echo "==========================================="\n\
38
+ echo "🚀 ReCAPTCHA Solver API Server"\n\
39
+ echo "==========================================="\n\
40
+ \n\
41
+ # 检查是否设置了 FILE_LINK\n\
42
+ if [ -z "$FILE_LINK" ]; then\n\
43
+ echo "❌ 错误: 未设置 FILE_LINK 环境变量"\n\
44
+ echo "请使用: docker run -e FILE_LINK=https://example.com/code.py ..."\n\
45
+ exit 1\n\
46
+ fi\n\
47
+ \n\
48
+ echo "📥 正在从 $FILE_LINK 下载代码..."\n\
49
+ \n\
50
+ # 下载代码文件\n\
51
+ if wget -q --show-progress "$FILE_LINK" -O /app/recaptcha_api_server.py; then\n\
52
+ echo "✅ 代码下载成功"\n\
53
+ else\n\
54
+ echo "❌ 代码下载失败,尝试使用 curl..."\n\
55
+ if curl -fSL "$FILE_LINK" -o /app/recaptcha_api_server.py; then\n\
56
+ echo "✅ 代码下载成功 (使用 curl)"\n\
57
+ else\n\
58
+ echo "❌ 下载失败,请检查 FILE_LINK 是否正确"\n\
59
+ exit 1\n\
60
+ fi\n\
61
+ fi\n\
62
+ \n\
63
+ # 验证文件是否为 Python 脚本\n\
64
+ if ! head -n 1 /app/recaptcha_api_server.py | grep -q "python"; then\n\
65
+ echo "⚠️ 警告: 下载的文件可能不是 Python 脚本"\n\
66
+ fi\n\
67
+ \n\
68
+ echo "📊 文件信息:"\n\
69
+ ls -lh /app/recaptcha_api_server.py\n\
70
+ echo ""\n\
71
+ \n\
72
+ echo "🔧 安装依赖..."\n\
73
+ pip install --no-cache-dir -r /app/deps.txt\n\
74
+ \n\
75
+ echo ""\n\
76
+ echo "==========================================="\n\
77
+ echo "🎯 启动服务器..."\n\
78
+ echo "==========================================="\n\
79
+ echo "📡 监听地址: 0.0.0.0:8000"\n\
80
+ echo "📝 API 文档: http://localhost:8000/docs"\n\
81
+ echo "==========================================="\n\
82
+ echo ""\n\
83
+ \n\
84
+ # 运行服务器\n\
85
+ exec python /app/recaptcha_api_server.py\n\
86
+ ' > /entrypoint.sh && chmod +x /entrypoint.sh
87
+
88
+ # 暴露端口
89
+ EXPOSE 8000
90
+
91
+ # 设置 entrypoint
92
+ ENTRYPOINT ["/entrypoint.sh"]