tutoihoc commited on
Commit
3d2edd9
·
verified ·
1 Parent(s): 20607dd

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +43 -0
Dockerfile ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.13
2
+
3
+ # Thiết lập biến môi trường cho UV và Port của Hugging Face
4
+ ENV UV_PROJECT_ENVIRONMENT=/usr/local
5
+ ENV PORT=7860
6
+
7
+ WORKDIR /app
8
+
9
+ # 1. Cài đặt uv
10
+ RUN pip install uv --no-cache-dir
11
+
12
+ # 2. Clone repository private sử dụng Secret của Hugging Face
13
+ RUN --mount=type=secret,id=CLONE,mode=0444,required=true \
14
+ git clone https://$(cat /run/secrets/CLONE)@github.com/tutoihoc/ha.git .
15
+
16
+ # 3. Cài đặt các dependencies từ repo vừa clone về
17
+ # Không dùng --mount bind vì file đã có sẵn trong container sau khi clone
18
+ RUN --mount=type=cache,target=/root/.cache/uv \
19
+ uv sync --locked --no-cache-dir
20
+
21
+ # 4. Cài đặt trình duyệt cho Playwright và Camoufox
22
+ RUN chmod +x /usr/local/lib/python3.13/site-packages/playwright/driver/node && \
23
+ uv run playwright install firefox --with-deps && \
24
+ uv run camoufox fetch
25
+
26
+ # 5. Tạo các thư mục cần thiết nếu chưa có (tránh lỗi permission)
27
+ RUN mkdir -p /app/states /app/gemini_logs && chmod -R 777 /app
28
+
29
+ # --- SCRIPT TỰ KHỞI ĐỘNG LẠI SAU 1 GIỜ ---
30
+ # Lệnh 'timeout 7200' sẽ chạy app và tự động kill nó sau 7200 giây (2 tiếng)
31
+ RUN echo '#!/bin/bash\n\
32
+ while true; do\n\
33
+ echo "Starting app with 2 hour timeout..."\n\
34
+ timeout 7200 uv run python app.py\n\
35
+ echo "App stopped or timed out. Restarting..."\n\
36
+ sleep 1\n\
37
+ done' > /app/run_loop.sh && chmod +x /app/run_loop.sh
38
+
39
+ # Expose port 7860 cho Hugging Face
40
+ EXPOSE 7860
41
+
42
+ # Chạy script vòng lặp thay vì chạy thẳng python
43
+ CMD ["/app/run_loop.sh"]