| FROM python:3.13 |
|
|
| |
| ENV UV_PROJECT_ENVIRONMENT=/usr/local |
| ENV PORT=7860 |
|
|
| WORKDIR /app |
|
|
| |
| RUN pip install uv --no-cache-dir |
|
|
| |
| RUN --mount=type=secret,id=CLONE,mode=0444,required=true \ |
| git clone https://$(cat /run/secrets/CLONE)@github.com/tutoihoc/ha.git . |
|
|
| |
| |
| RUN --mount=type=cache,target=/root/.cache/uv \ |
| uv sync --locked --no-cache-dir |
|
|
| |
| RUN chmod +x /usr/local/lib/python3.13/site-packages/playwright/driver/node && \ |
| uv run playwright install firefox --with-deps && \ |
| uv run camoufox fetch |
|
|
| |
| RUN mkdir -p /app/states /app/gemini_logs && chmod -R 777 /app |
|
|
| |
| |
| RUN echo '#!/bin/bash\n\ |
| while true; do\n\ |
| echo "Starting app with 2 hour timeout..."\n\ |
| timeout 7200 uv run python app.py\n\ |
| echo "App stopped or timed out. Restarting..."\n\ |
| sleep 1\n\ |
| done' > /app/run_loop.sh && chmod +x /app/run_loop.sh |
|
|
| |
| EXPOSE 7860 |
|
|
| |
| CMD ["/app/run_loop.sh"] |